合并具有相同名称的文件并按顺序编号

时间:2017-07-26 20:14:39

标签: bash

我正在使用Bash命令开发Linux集群

我的目录编号为1到100,每个目录都包含一个名为" FILE1"的文件。

如何整合这些" FILE1"文件到一个目录?

这是我到目前为止所尝试的

find ./*/ -iname "FILE1" -exec ln -t ./ConsolidatedFILEs/ {} +

除了所有的" FILE1"具有相同名称的文件。此问题导致以下错误消息。

ln: failed to create hard link './2/FILE1': File exists
ln: failed to create hard link './3/FILE1': File exists
ln: failed to create hard link './4/FILE1': File exists

是否有一种简单的方法来顺序编号文件以避免此问题?我找不到足够容易理解和实施的解决方案。

由于

1 个答案:

答案 0 :(得分:2)

这只会移动文件,并按顺序重命名。

for i in {1..100}; do mv $i/FILE_1 ConsolidatedFILES/FILE_1_$i; done

但是你提到你的编号可能有差距,以及" IHC _"的目录前缀,所以这里有一些补充。

for i in {1..100}; do if [ -e "IHC_$i/FILE_1" ]; then mv IHC_$i/FILE_1 ConsolidatedFILES/FILE_1_$i; fi; done

当然,如果您想要链接,可以将mv替换为ln。并将100替换为您期望的上限。