2
我剛剛切換到linux,我正在嘗試編寫我的第一個bash腳本。我有一個包含大量文件夾的文件夾,所有文件夾都包含文件。喜歡的東西:使用for循環將文件從子目錄移動到父目錄
MainFolder
- Folder1中
- Sub1的(包含多個文件)
- 分公司2(包含許多文件)
- 文件夾2
- Sub1的(包含許多文件)
- 分公司2(包含許多文件)
。 。 。
- Folder1中
我想將包含在子文件夾中的所有文件移動到其父文件夾中。我的第一本能是嘗試寫一個for循環。我能夠在與命令的時間做一個文件夾:
mv MainFolder/Folder1/*/* MainFolder/Folder1/
,但我希望超過在主目錄下的所有文件夾寫一個bash腳本循環。這是我到目前爲止:
#!/bin/bash
dir1="/pathto/MainFolder"
subs= ls $dir1
for i in $subs; do
mv "$dir1/$i/*/*" "$dir1/$i/"
done
這顯然不起作用,但我不明白我哪裏出錯了。
我也試過:
mv MainFolder/*/*/* MainFolder/*/
漂亮的災難性的後果。一旦我使文件移動正常工作,我還想刪除循環中的舊子文件夾。
你想用'MainFolder/Folder1/Sub1/foo.txt'和'MainFolder/Folder1/Sub2/foo.txt'做什麼?名稱衝突時,銷燬一些文件還行嗎? – twalberg
在我的場景中不會有任何名稱衝突,但我會對如何處理該問題感興趣。 – dayne
這將是你決定 - 有很多方法來處理它,兩個明顯的是1)不移動第二個和後來的衝突文件,2)以某種方式重命名所有的衝突,所以他們不衝突。但這取決於你想完成什麼 – twalberg