
我有一系列文件,它們總是以至少 5 個數值開頭,例如:
85966_88.jpg
使用這個答案我學到了在命令中使用 find 和 regextype 來刪除文件,如下所示:
find . -regextype posix-extended -iregex './a_[0-9]{6}' -execdir bash -c '[[ ${1##./a_} > 000750 ]] && echo $1' "removing: " {} \;
我改變了這個命令來滿足我的需要,如下所示:
find . -regextype posix-extended -iregex './[0-9]{5}' -execdir bash -c '[[ ${1##./} > 000001 ]] && echo $1' "removing: " {} \;
我執行該命令,但它不會刪除檔案。我不知道如何刪除所有前 5 位數字,然後是 _ 的 .jpg
答案1
首先,命令如所寫不刪除任何內容:如您連結的答案所述
使用命令對此進行測試
echo
,一旦確定它列出了正確的文件,請改用rm
。
其次,對於您的情況來說太複雜,因為您不想將刪除限制為匹配的範圍或子集(因此您不需要 shell 測試內容) - 您可以簡單地執行以下操作
find -regextype egrep -regex '.*/[0-9]{5}_.*\.jpg' -print
(測試)並-print
在-delete
您滿意其工作正常後更換。
然而,即使正則表達式似乎也過於複雜 - 一個簡單的全域匹配實際上需要更少的輸入:
find -name '[0-9][0-9][0-9][0-9][0-9]_*.jpg' -print
(再次,當你確定時替換-print
為)。-delete
如果您不需要遞歸搜索,一個簡單的 shell glob 應該可以工作:
rm -i [0-9][0-9][0-9][0-9][0-9]_*.jpg