Shell-Script

在目錄中遞歸查找長度為 32 個字元的文件並應用命令

  • August 16, 2016

我有文件夾和文件看起來像這樣:

/thumbs/6b0/6b029aab9ca00329cd28fd792ecf90a.jpg
/thumbs/6b0/6b029aab9ca00329cd28fd792ecf90a-s.jpg
/thumbs/d11/d11e15a72e20e14c45bd2769d763126d.jpg
/thumbs/d11/d11e15a72e20e14c45bd2769d763126d-s.jpg

我想將以下命令應用於 thumbs 文件夾中所有子目錄中名稱中沒有 -s 的文件。

mogrify -resize 50% -quality 85 -strip filename.jpg

我環顧四周 find 和 grep 但不知道我該怎麼做。

任何幫助表示讚賞。

find thumbs/ -not -name "*-s.jpg" -exec mogrify -resize 50% -quality 85 -strip {} \;

要回答主題中的問題:

find . -name '????????????????????????????????.jpg' -exec cmd {} \;

要插入這 32 個?s,使用tcshzsh模式bashemacs請鍵入Alt+3``Alt+2``?。使用這些外殼並kshvi模式下,輸入 a ?,使用 離開插入模式Esc,然後按x剪切它?,然後32p將其粘貼 32 次。

使用 GNU find,您還可以:

find . -regextype egrep -regex '.*/[^/]{32}\.jpg' -exec cmd {} \;

引用自:https://unix.stackexchange.com/questions/303614