Скрипт для поиска дубликатов файлов по расширению и их удаления

Начиная с версии 2.0.0(, выпущенной в 2016 году ), вы можете нажать c, чтобы пометить процесс и его дочерние элементы. Это упоминается во встроенной справке -, которая показана на h.

Затем вы можете нажать k, чтобы отправить сигнал помеченным процессам; вам будет представлен список всех возможных сигналов на выбор.

0
23.08.2021, 07:18
2 ответа
find. -type f -exec sh -c 'for name do rm -f -- "$name.7z.bad"; done' sh {} +

Приведенная выше команда находит все обычные файлы в текущем каталоге или ниже, а затем пытается удалить их все, но сначала добавляет .7z.badв конец имен.

Таким образом, все файлы с именами, оканчивающимися на .7z.bad, удаляются, если есть соответствующие файлы без этого суффикса имени файла.

Тестирование в пустом каталоге:

$ touch file-{1..5}.txt.7z.bad
$ touch file-{1..3}.txt
$ ls
file-1.txt        file-2.txt        file-3.txt        file-4.txt.7z.bad
file-1.txt.7z.bad file-2.txt.7z.bad file-3.txt.7z.bad file-5.txt.7z.bad
$ find. -type f -exec sh -c 'for name do rm -f -- "$name.7z.bad"; done' sh {} +
$ ls
file-1.txt        file-2.txt        file-3.txt        file-4.txt.7z.bad file-5.txt.7z.bad
2
23.08.2021, 09:55
find. -type f -name "*.7z.bad" -exec sh -c '
  for file; do
    if [ -f "${file%.7z.bad}" ]; then
      rm -- "$file"
    else
      echo "keeping file $file" >&2
    fi
  done
' sh {} +

Это передает все имена файлов, найденные с помощью find, сценарию оболочки, который затем перебирает имена файлов и проверяет, есть ли у каждого имени файла без суффикса .7z.badсуществует. В этом случае он удаляет файл с суффиксом .7z.badили в противном случае печатает предупреждающее сообщение.

Замените -fна -s, если вы хотите проверить, существует ли разархивированный файл и имеет ненулевой -размер файла.

1
23.08.2021, 09:40

Теги

Похожие вопросы