Scripting
如何僅查找和複製主目錄下的前 100 個 .jpg 文件,包括其中的所有子目錄?
我編碼如下:
$ find . -maxdepth 1 -name '*.jpg' | head -n 100 | xargs -0 {} cp {} /home/rachael/backup
錯誤顯示:
xargs: {}: No such file or directory
我的程式碼有什麼問題,如何修復?
有幾件事:
- 您的命令中缺少 a
-I
來xargs
告訴它{}
要用於什麼-0
告訴期望以xargs
空分隔的輸入,但您傳遞的是換行符分隔的輸入所以
find . -maxdepth 1 -name '*.jpg' -print0 | head -zn 100 | xargs -0 -I{} cp {} /home/rachael/backup
如果您有 GNU 版本
cp
,您可能想要使用替代形式find . -maxdepth 1 -name '*.jpg' -print0 | head -zn 100 | xargs -0 cp -t /home/rachael/backup
steeldriver 查明了您的命令的一些問題,但我只是想使用
zsh
shell 添加一個更短的解決方案(因為問題不是特定於任何一個 shell):cp -- *.jpg(.[1,100]) ~rachel/backup
這將複製目前目錄中匹配 globbing 模式的前 100 個(按字典順序)正常文件
*.jpg
。對於按修改時間戳記的 100 個最舊的文件,使用
*.jpg(.Om[1,100])
,並使用小寫o
而不是O
獲取最近修改的 100 個文件。使用n
代替Om
來獲得文件名的數字排序,並添加D
以匹配隱藏的名稱。