【发布时间】:2017-12-16 01:41:58
【问题描述】:
我想将一些已处理的文件从它们的原始目录移动到一个新目录。每个目录名称对应,但只有两个数字;其余的目录名称不同。如何在 for 循环中定义模式以轻松查找这些文件并将其移入和移出其对应的目录?
更多详情:
我有两组 90 个目录。第一组包含原始文件,第二组是我想要移动相应 gzip 文件的位置。问题是第一组和第二组目录只共享一部分名称:第一组是ABC_1##;第二个是##YY00ZZ(例如:原始目录ABC_123 对应于新目录23yy00zz。他们必须遵循这种格式有一个复杂但必要的原因)。 gzip 压缩的文件都具有相同的名称(我们称之为 FILE.gz),但至关重要的是必须从原始目录 23 转到新目录 23……
这是我尝试过的,它对我不起作用(使用 cp 而不是 mv 以避免搞砸太多):
for dir in $(ls -d ~/path/to/raw/ABC_1{01..90}/EACH_RAW_DIR); do
dir2=$(ls -d ~/path/to/new/{01..90}yy00zz/EACH_NEW_DIR)
echo $dir
echo $dir2
cp -r $dir/FILE.gz $dir2/.
done
感谢您的任何见解!
【问题讨论】:
-
“EACH_RAW_DIR”和“EACH_NEW_DIR”是实际目录吗?您能否举一个完整的
mv命令示例,该命令需要移动其中一个文件?