удалите файлы, которые не являются в другой папке

Вы имеете в виду как модуль PHP? Я полагаю, что это - php5-завихрение, но просто попытайтесь искать конфетку.

Пакет 'завихрение' является просто клиентом завихрения командной строки.

1
задан 8 March 2012 в 18:55
2 ответа

Я протестировал это решение на небольшом образце, но обязательно сделайте резервную копию своих каталогов, прежде чем пытаться:

cd ../thumb2
for f in *; do test -e ../thumb/$f || echo rm $f; done

У меня нет каталога с тысячами файлов, поэтому я не Не знаю, работает ли эта команда для такой большой выборки. Пожалуйста, попробуйте его после того, как вы создали резервные копии своих каталогов. Убедившись, что команда работает правильно, удалите команду echo .

Обновление

Вот модифицированная версия отличного решения Гленна:

diff thumb thumb2 | \
while read field1 field2 dir filename; do 
    [[ $dir = "thumb2:" ]] && echo rm "thumb2/$filename"
done
5
ответ дан 3 December 2019 в 16:37

Вы также можете вызвать diff для проверки содержимого каталога:

diff thumb thumb2 |
while read line; do
  case "$line" in
    "Only in thumb2: "*) echo rm "thumb2/${line#*: }" ;;
  esac
done

Удалите echo , если вы уверены, что он работает.

2
ответ дан 3 December 2019 в 16:37

Теги

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