我有很多文件示例:RT_1.txt、RT_2.txt、....和 RT_1000.txt 以及其他文件,例如:EU_1.txt、EU_2.txt、..... 和 EU_1000.txt。
我需要使用循环以便将具有相同编号的每两个文件(例如:RT_1.txt 和 EU_1.txt)放入目录中。如果有人回复我,我很感激。
答案1
假设您想要移动文件,即使只有其中一个存在,并且还假设目标目录名称是数字本身:
for n in {1..1000}; do
mkdir TARGET_$n
mv -f {RT,EU}_$n.txt TARGET_$n/
done
如果您只想移动两个文件都存在的文件,请使用
for n in {1..1000}; do
[ -e RT_$n.txt ] && [ -e EU_$n.txt ] && \
mkdir TARGET_$n && mv -f {RT,EU}_$n.txt TARGET_$n/
done
反而。
两种解决方案都使用该{1..1000}
构造来生成数字列表,然后处理相应的文件。如果文件不存在,第一个块可能会抛出错误消息(因为它根本不检查具有特定名称的文件是否存在),第二个块在创建目标文件夹并将文件移动到那里之前测试是否存在。