我有一個包含子文件夾X1,X2和X3的父級編碼器X ....每個這些子文件夾都包含音樂文件。我想將這些文件移動到主文件夾X並刪除子文件夾X1,X2 ..等等。在終端中編寫腳本以將文件從子文件夾移動到父文件夾
我該怎麼做終端(mac)?
感謝上百萬,
我有一個包含子文件夾X1,X2和X3的父級編碼器X ....每個這些子文件夾都包含音樂文件。我想將這些文件移動到主文件夾X並刪除子文件夾X1,X2 ..等等。在終端中編寫腳本以將文件從子文件夾移動到父文件夾
我該怎麼做終端(mac)?
感謝上百萬,
您可能不需要整個腳本來做到這一點;它應該可以從命令行執行。假設您想要移動的所有音樂文件都以.mp3結尾,而其他所有文件(不想移動的文件)都不會移動。如果是這種情況,可以使用cd進入目錄X,然後運行:
mv X1/*.mp3 .
...等等的其他兩個子目錄。
或者,如果你想要做的所有文件在同一時間,你可以這樣做:
i=0; while [ $i -lt 3 ]; do i=$(($i + 1)); mv X$i/*.mp3 .; done
在後「-lt」的數量是要提取的文件最終目錄後綴從。
當您完成後,您可以使用
rmdir X1
刪除的目錄,如果他們是空的,或者
rm -r X1
如果他們不。您還可以構建成一個班輪上面是這樣的:
i=0; while [ $i -lt 3 ]; do i=$(($i + 1)); mv X$i/*.mp3 .; rm -r X$i; done
...只要確保沒有任何東西在你想保持在這樣做之前的目錄。
UPDATE:如果子目錄沒有系統地命名,還有另一種方法。請注意,這隻會不出現錯誤的工作,如果你想從父目錄中所有子目錄的文件解壓:
for i in `ls -l | egrep '^d'| awk '{print $10}'`; do mv $i/*.mp3 .; done
下,如果你有在頂級目錄和一個錯誤的文件會發出一些錯誤信息有關無法刪除「X」,但他們可以放心地忽略:
find X -type f -exec mv {} X \; # Move all files into X
find X -depth -type d -exec rmdir {} \; # Remove all subdirectories of X
這將移動所有文件。如果要將文件限制到某個特定集合,請在第一個find
命令上使用-name
(或其他)限定符來過濾移動的文件。
偉大的,但子文件不僅三個他們很多(約100),他們沒有命名X1 X2等......無論如何做不同的命名子目錄?感謝您提前回答。 – 2013-02-15 15:00:04
查看上面的更新。它現在將查找X的所有子目錄,而不管名稱如何,並從這些目錄中提取以.mp3結尾的所有文件。 – 2013-02-15 15:11:52