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

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

Например:

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

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

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

  • Удалить файл, если символьная ссылка ушла
  • Найти файлы внутри подкаталогов с разными именами (чтобы удалить их с помощью mtime)
  • Где файлы идут, когда выдается команда rm?
  • Удалите все файлы, за исключением последнего файла каждого месяца
  • fdupes - удалять файлы после сравнения двух каталогов
  • Я случайно выполнил rm -rf / * (не как root). Что я могу исправить?
  • Позволяет ли Linux выполнить команду «rm -rf /»?
  • Обработка каждой строки из текстового файла и удаление связанных файлов с диска
  • 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 
    Interesting Posts

    Как отлаживать панику ядра Linux?

    Безопасно ли использовать tar, даже если в именах файлов и путях есть некоторые символы, отличные от ASCII?

    sysfs и devtmpfs

    Общая доступная физическая память из / proc / meminfo не складывается

    Можно ли использовать два символа (например, tm) в режиме вставки в zsh для привязки команды?

    Почему systemd печатает «Looping too fast» и что делать?

    проблема при входе в систему по умолчанию / bin / fish shell в gdm

    Почему файлы компакт-дисков не отображаются при монтировании в текущем каталоге?

    Модалии USB. Значение числовых значений

    Сценарий резервного копирования висит

    как выполнить очистку данных (например, смягчение бит битва памяти), в linux / unix?

    Изменение каталога журналов по умолчанию btmp и wtmp

    Почему awk печатает всю строку, когда я хочу, чтобы она печатала переменную?

    Как добавить календари и контакты для почтового сервера

    У вас есть backticks (т.е. `cmd`) в * sh оболочках устарели?

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