我正在使用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
是否有一种简单的方法来顺序编号文件以避免此问题?我找不到足够容易理解和实施的解决方案。
由于
答案 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
替换为您期望的上限。