我想將所有文件從一個名爲Default.png的目錄中複製出來。看來有很多方法可以做到這一點。什麼似乎對你最有效?BASH複製除一個以外的所有文件
回答
簡單,如果src/
只包含文件:
find src/ ! -name Default.png -exec cp -t dest/ {} +
如果src/
有子目錄,這忽略了他們,但並複製它們的內部文件:
find src/ -type f ! -name Default.png -exec cp -t dest/ {} +
如果src/
有子目錄,這不會遞歸到它們中:
find src/ -type f -maxdepth 1 ! -name Default.png -exec cp -t dest/ {} +
這對我來說是最好的,因爲看起來OS X沒有啓用glob。 – 2009-08-21 20:54:31
請問有人能解釋一下命令結尾處的「加號」是什麼?我總是看到\;在-exec選項的末尾,它是一樣的嗎? – Max 2014-09-21 22:28:04
@Max'\;'每個文件執行一次命令。 '+'運行一次命令並將所有文件名一次傳遞給它(受命令行長度限制)。一般來說,'+ +更高效一點。 – 2014-09-22 00:48:51
應該如下:
cp -r !(Default.png) /dest
如果複製到嵌套在當前文件夾(稱爲在下面的案例)的文件夾,你需要省略目錄也:
cp -r !(Default.png|example) /example
這會產生 -bash:!:未找到事件 – 2009-08-21 18:46:49
是否將文件複製到嵌套在複製文件夾內的文件夾中? – Jon 2009-08-21 18:48:07
這需要'shopt -s extglob'工作,如果它已被禁用。 – 2009-08-21 18:52:40
我'd只是這樣做:
cp srcdir/* destdir/ ; rm destdir/Default.png
除非文件很大。否則使用例如
find srcdir -type f/ |grep -v Default.png$ |xargs -ILIST cp LIST destdir/
grep -v是你的朋友 – 2009-08-21 19:02:08
第一個命令不是OP所要求的。如果'Default.png'存在於兩個目錄中,它將會替換'srcdir'中的'destdir'中的一個,然後刪除複製的'Default.png'。相反,OP希望保留'destdir'中已存在的'Default.png'。 – SnowFrog 2017-05-22 11:34:33
的rsync一直是我的CP/SCP更換了很久:
rsync -av from/ to/ --exclude=Default.png
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
-v, --verbose increase verbosity
您的回答與我所有的rsync命令一樣不清楚。這就是爲什麼我不使用它。什麼是'rlptgoD'和什麼是'HAX'?爲什麼要創建一個檔案? – Simon 2017-07-27 07:07:21
cp `ls | grep -v Default.png` destdir
這比您想要的更容易產生錯誤。 – 2009-08-22 01:40:18
這適合我最好的 – once 2017-01-20 03:10:07
# chattr +i /files_to_exclude
# cp source destination
# chattr -i /files_to_exclude
- 1. NSIS - 刪除除一個文件以外的所有文件
- 2. Laravel 5 Elixir:複製除了一些文件以外的所有文件
- 3. 刪除除一個重複記錄以外的所有記錄
- 4. bash:刪除文件名中除最後一個版本以外的所有文件
- 5. Bash/sed:刪除除了匹配以外的所有文本文件
- 6. 關閉所有打開的excel文件,除了一個以外
- 7. IIS - 使用HttpHandler除了一個以外的所有文件
- 8. 如何Git提交除一個文件以外的所有(。)?
- 9. 將除特定行以外的所有行復制到文本文件
- 10. 將所有子文件夾從一個複製到另一個,但java中的一些子文件夾除外?
- 11. 在bash腳本中刪除除最新3以外的所有文件
- 12. 刪除除C#中的文件以外的所有文件夾
- 13. 刪除除4個最新目錄以外的所有文件
- 14. Windows Cmd行刪除命令刪除除一個以外的所有文件
- 15. Inotifywait排除除特定文件以外的所有文件
- 16. .htaccess拒絕訪問除一個文件以外的所有文件
- 17. 如何git-pull除一個文件夾以外的所有文件夾
- 18. MODx Wayfinder&level = 2排除除一個之外的所有文件
- 19. 這個bash函數是如何移除除了一些文件之外的所有文件的?
- 20. 複製除文件以外的整個目錄
- 21. 如何使用bash腳本將所有* .html文件從一個文件夾複製到另一個文件夾?
- 22. 刪除除一個目錄以外的所有文件和目錄
- 23. 刪除和複製文件[BASH]
- 24. 隱藏除CSS第一個字母以外的所有文本?
- 25. 通過bash命令禁用除一個內核以外的所有內核
- 26. 取消除最後一個以外的所有事件,
- 27. 替換除第一個以外的所有事件
- 28. 如何忽略除一個或兩個目錄以外的所有文件?
- 29. 獲取除gulp.src中縮小文件以外的所有文件
- 30. Bash:將文件的所有參數複製到目錄
爲什麼你需要它來跳過這個文件,而不是複製它後,只是刪除了嗎?它是否已經存在於目標目錄中? – 2009-08-21 18:48:40
是的,具有相同名稱的文件已經存在於目標目錄中。 – 2009-08-21 20:53:02
@ LasseV.Karlsen:或者如果它是一個大文件,您可以節省複製它的時間。我對此感興趣,但不包括目錄而不是文件。 – 2012-11-20 16:13:02