Найти и удалить все те же файлы (по имени) между двумя каталогами

Я хочу найти все файлы в каталоге dir1, имеющие одинаковые имена файлов в dir2, и удалить их из dir1.

Например:

dir1: first.txt second.txt dir2: third.txt first.txt 

Поэтому я хочу удалить из файла dir1 first.txt .

Как достичь этого с помощью терминала Bash? (не скрипт for циклов и т. д. или 3-я партийная программа, например «fdupes»)

4 Solutions collect form web for “Найти и удалить все те же файлы (по имени) между двумя каталогами”

Для обработки имен файлов с пробелами:

 #!/bin/bash OPWD=$(pwd) cd "$1" for MYFILE in "$2"/* do if [ -f "${MYFILE##/*/}" ] then echo "removing ${MYFILE##/*/}" rm "${MYFILE##/*/}" fi done cd "$OPWD" 

Еще один quickie, также без явного цикла. Не забывайте, что вы можете префикс rm -f с echo чтобы проверить это.

 ( cd dir2 && find . -maxdepth 1 -type f -print0 ) | ( cd dir1 && xargs -0 rm -f ) 

Вы можете поместить это в скрипт, заменив dir1 на "$1" и dir2 на "$2"

Быстрый ответ…

 #!/bin/bash #finddel dir1 dir2 for i in $(ls $1) do [ -f $2/$i ] && echo "Deleting $2/$i" && rm -f $2/$i done 

Используйте rsync :

 rsync --verbose --remove-source-files xyz/* . pop3-2.dump pop3-3.dump pop3.dump popcorn-build.log sent 852,069,995 bytes received 124 bytes 113,609,349.20 bytes/sec total size is 851,861,745 speedup is 1.00 
  • Undeletable directory
  • Не удается удалить файл из-за «Недопустимый аргумент»
  • Linux: удалить файл * .. но не file1 и file2
  • Как рекурсивно удалить все файлы и папки, кроме нескольких определенных папок?
  • Удалить файлы старше X дней +
  • Почему моя команда: «rm -rf *» не удаляет все файлы в каталоге?
  • Убитые `rm` и` cp` на долю nfs
  • Что именно произойдет, если эта команда будет запущена?
  • Как безопасно удалять данные после rm
  • Удаление определенных файлов рекурсивно с помощью rm или что-то простое?
  • Rm без удаления самого файла / каталога
  • Interesting Posts

    Скопировать initramfs в определенное место после сборки?

    Средство чтения в командной строке (например, «меньше»), которое может указать строку, где пользователь перестает читать

    Как использовать быструю замену для замены всех строк предыдущей команды?

    Подстановочный знак «Bash star *» всегда создает (по возрастанию) отсортированный список?

    Как удалить метаданные из файлов изображений

    Как работает эта команда vim: g / # / + 1t.`

    Многопоточность / Викинг в сценарии bash

    Как я могу освободить память / управлять памятью в Linux-окне?

    Исключить каталог в поиске

    bash: перенаправление ввода-вывода, но не с суффиксами

    Как установить программное обеспечение на Fedora 13?

    Как изменить UUID файловой системы (2 одинаковых UUID)?

    определить (в скрипте), если команда запускается в терминале (из файла рабочего стола?)

    Запрос терминала перезаписывает текущую строку

    Как приостановить USB-устройство?

    Linux и Unix - лучшая ОС в мире.