我在一個資料夾中有 100 個文件,其中包括一個名為「target」的資料夾。我想將此資料夾中的所有檔案遷移到資料夾目標中(目標資料夾本身除外)。
是否有有效的終端命令來執行此操作?
答案1
如果目錄中只有檔案(和目錄目標),只需使用mv
, 而不是find
:
mv * target
它會抱怨「目標」無法自行移動,但之後檔案將全部位於目標中。
答案2
用這個
$ mv target ..
$ mv * ../target
$ mv ../target .
答案3
這也有效:
find . -maxdepth 1 ! -name target ! -name . -exec mv "{}" target \;
相對於 bash 補全的主要優點之一find
是您可以同時取得隱藏檔案。mv * ...
不會那樣做。
你或許可以選擇類似的東西:
mv -t target * .[^.]*
或者正如 James 指出的那樣,您可以縮減 find 命令以僅查看文件...正如 LoremIpsum 指出的那樣,如果有數十億個文件,則使用xargs
會稍微更有效:
find . -maxdepth 1 -type f -print0 | xargs -0 mv -t target
答案4
將目標目錄移至前一個目錄,然後將所有內容移至該目錄,最後將其移回目前目錄(如果可以的話)的方法。唯一的問題是它不適用於我們需要保留歷史記錄的 git 專案目錄。
所以對於 git 目錄,只需像這樣移動:git mv * 目標-k
這-k選項用於跳過移動/重命名錯誤