Это была очень открытая тема. Я привожу решение моей собственной проблемы и, надеюсь, разъясню одну или две вещи для вас и других пользователей, которые ищут надежность (как я).
В моем случае у моего мака была куча дубликатов фотографий. Когда максы создают дубликаты, они добавляют пробел и число в конце перед расширением.
IMG_0001.JPG
может иметь комплекс множественности с IMG_0001 2.JPG
, IMG_0001 3.JPG
и так далее. В моем случае это продолжалось до 2600 бесполезных файлов.
Чтобы все накачать, я перешел к рассматриваемой папке.
cd ~/Pictures/
Далее, давайте докажем себе, что мы можем перечислить все файлы в каталоге. Вы заметите, что в регулярное выражение необходимо включить .
с надписью «искать в этом каталоге». Кроме того, вы должны соответствовать полному имени файла, поэтому .+
необходим для перехвата всех остальных символов.
find -E . -regex '\..+'
Соответственно, результаты приведут к строкам, которым вы должны соответствовать, включая .
, о котором я упоминал ранее, косую черту /
и все остальное.
./IMG_1788.JPG
./IMG_1789.JPG
./IMG_1790.JPG
./IMG_1791.JPG
Так что я не могу написать это, чтобы найти дубликаты, потому что он не содержит "./"
find -E . -regex 'IMG_[0-9]{4} .+'
но я могу написать это, чтобы найти дубликаты, потому что он включает "./"
find -E . -regex '\./IMG_[0-9]{4} .+`
или более модная версия с .*/
, как упомянуто @ jackjr300, делает то же самое.
find -E . -regex '.*/IMG_[0-9]{4} .+`
Наконец, запутанная часть. \d
не распознается в BSD. [0-9]
работает так же хорошо. Ответы других пользователей цитировали руководство re_format , в котором указано, как писать общие шаблоны, заменяющие такие вещи, как \d
, с забавным синтаксисом с квадратным двоеточием, который выглядит следующим образом: [:digit:]
. Я пытался и пытался, но это никогда не работает. Просто используйте [0-9]
. В моем случае я потратил кучу времени, думая, что должен был использовать [:space:]
вместо пробела, но я обнаружил (как обычно!), Что мне просто нужно было дышать и действительно читать регулярное выражение. Это оказалось моей ошибкой. :)
Надеюсь, это кому-нибудь поможет!