2017-07-26 28 views
1

我使用bash命令巩固以同名的文件,并依次进行编号,

在Linux集群工作,我有通过100每个包含一个名为“FILE1”文件编号为1的目录中。

如何将这些“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 

有没有简单的方法来顺序编号的文件,以避免这个问题?我没有找到一个足够容易理解和实施的解决方案。

谢谢

回答

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 

当然,你可以用ln取代mv,如果你想要一个链接。并用您期望的任何上限替换100

+0

对于使用约定命名的目录,您是否有任何建议来修改此答案:IHC_108,IHC_200,IHC_346。而不是问题中描述的目录1到100? – Paul

+0

Hi @Paul,我已经更新了它的目录格式和可能的空白。 – flu

+0

谢谢你这个作品! – Paul