Удалить все файлы, не имеющие целевой строки?

Добавьте параметр - max-depth со значением 0:

du -h --max-depth=0 /root/test

Или используйте параметр -s (сводка):

du -sh /root/test

Любой из них должен дать вам то, что вы хотите. Для дальнейшего использования очень полезно man du .

0
05.05.2018, 16:21
2 ответа

Думаю, просто так:

rm -rf `find /myPhotorec -name "*" | grep  -v "44c9ea3abbd24"`
-1
28.01.2020, 04:23
find /myPhotorec -type f ! -exec grep -qF '44c9ea3abbd24' {} ';' -print -delete

Это найдет все обычные файлы в каталоге /myPhotorecили в нем, проверит, содержат ли они заданную строку (в содержимом файла ), и для каждого файла, который не содержит строку, отобразит пути и удалите их.

Если ваш findне поддерживает -delete, замените эту часть на -exec rm {} +.

Если вы хотите вручную подтверждать каждое удаление, измените -deleteна -ok rm {} ';'.

Относительноfind... -exec...:Понимание опции -exec команды `find`

1
28.01.2020, 04:23

Теги

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