查找多个文件之间具有某些共同编号的两个文件

查找多个文件之间具有某些共同编号的两个文件

我有很多文件示例: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}构造来生成数字列表,然后处理相应的文件。如果文件不存在,第一个块可能会抛出错误消息(因为它根本不检查具有特定名称的文件是否存在),第二个块在创建目标文件夹并将文件移动到那里之前测试是否存在。

相关内容