2017-07-26 30 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