Bash

刪除匹配模式的文件

  • December 4, 2018

我需要遞歸刪除所有子目錄中的所有文件,其中文件名包含一個數字,後跟一個“x”,後跟一個數字,至少兩次。

例子:

我想刪除這些文件:

'aaa-12x123-123x12.jpg'
'aaa-12x12-123x12-12x123.jpg'

但我不想刪除這些文件:

'aaa.jpg'
'aaa-12x12.jpg'
'aaaxaaa-123x123.jpg'
'aaaxaaa-aaaxaaa.jpg'

我該怎麼做(從 bash shell)

一個字元串包含“一個數字後跟x一個數字”當且僅當它包含一個數字後跟x一個數字,即如果它包含一個與模式匹配的子字元串[0-9]x[0-9]。因此,您要刪除名稱與 pattern 匹配的文件*[0-9]x[0-9]*[0-9]x[0-9]*.jpg

find /path/to/directory -type f -name '*[0-9]x[0-9]*[0-9]x[0-9]*.jpg' -delete

如果您find沒有-delete,請致電rm刪除文件。

find /path/to/directory -type f -name '*[0-9]x[0-9]*[0-9]x[0-9]*.jpg' -exec rm {} +

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