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

  1. du перечисляет каталоги, а не отдельные файлы (если только вы не делаете du *). В вашем домашнем каталоге есть либо много, либо много подкаталогов, которые добавляют до полных 200ГБ, либо, скорее всего, некоторые очень большие файлы в вашем домашнем каталоге.

1
03.11.2015, 23:40
4 ответа

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

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

Быстро ответ ...

#!/bin/bash
#finddel dir1 dir2

for i in $(ls $1)
    do
    [ -f $2/$i ] && echo "Deleting $2/$i" && rm -f $2/$i
done
0
27.01.2020, 23:13

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

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

Вы можете поместить это в сценарий, заменив dir1 на «$ 1» и dir2 на «$ 2»

4
27.01.2020, 23:13

Используйте 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
-1
27.01.2020, 23:13

Теги

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