在DOS下有這樣的指令
xcopy /s *.mp3 ..\TEMP2
我怎麼能在 Ubuntu 中做到這一點?
cp -r *.mp3 ../TEMP2
將遞歸複製所有 mp3 文件,不幸的是由於過濾器而沒有路徑*.mp3
。
cp -r *.* ../TEMP2
會複製路徑但不能僅限於mp3文件
我查看了 rsync,但我不明白。
答案1
Ubuntu 中工具的強大之處在於您可以將它們組合在一起。下一個命令會尋找目前目錄及其子目錄中的所有 .mp3 文件,並將它們複製到該../TEMP2/
資料夾,並保留路徑:
find -iname '*.mp3' -exec install -D {} ../TEMP2/{} \;
find -iname '*.mp3'
- 尋找所有以.mp3
(不區分大小寫)和 結尾的文件-exec
- 為每場比賽執行一個指令:install -D {} ../TEMP2/{}
- 複製符合的檔案以../TEMP/
保留路徑。 ({}
替換為包含檔案名稱的路徑)
\;
- 結束-exec
指令
如果想取得進度,-ls
在指令前加入("list") -exec
。它也可以放在後面\;
,但在這種情況下,名稱會在複製後顯示。例子:
find -iname '*.mp3' -ls -exec install -D {} ../TEMP2/{} \;
find -iname '*.mp3' -exec install -D {} ../TEMP2/{} \; -ls
答案2
有幾種選擇,但恐怕沒有一個是真正簡單的…
同步
rsync -r --include="*/" --include="*.mp3" --exclude="*" --prune-empty-dirs . ../TEMP2
這表示排除所有檔案 ( exclude="*"
),但查看所有目錄 ( include="*/"
) 並包含所有 mp3 檔案 ( include="*.mp3"
)。如果您不想複製不包含任何 mp3 檔案的目錄,則另外該--prune-empty-dirs
選項是必要的。
壓縮
zip -R archive.zip "*.mp3"
unzip -d ../TEMP2 archive.zip && rm archive.zip
第一個命令建立包含所有 mp3 檔案的存檔,第二個命令將內容解壓縮到目標目錄並刪除存檔檔案(如果成功)。
尋找
find . -iname "*.mp3" -exec install -D {} ../TEMP2/{} ";"
../TEMP2
首先建立目錄結構後(install -D
),這將找到所有 mp3 檔案並將它們複製到目錄中相應的路徑。
全部複製並刪除其餘的
只有當您只有幾個文件時,這才有意義不想要複製:
cp -r * ../TEMP2
find ../TEMP2 -type f \! -iname '*.mp3' -delete
這會複製所有內容,然後刪除所有非 mp3 文件