Находить и удалять файлы, сохраняя при этом все совпадающие файлы, если они находятся в определенном каталоге.

Если вы используете опцию -v, tar будет использовать немного больше памяти и запишет ее на /dev/consoleили любой активный дисплей. Вы можете проверить результат с помощью команды time.

Но если вы чувствуете, что при подключении к удаленному серверу, например, через SSH, это создает тяжелую работу, это может быть связано с плохим подключением к серверу. Пока вы вводите tar -xvf, процесс запускается на сервере и отправляет вывод консоли на ваш экран. Это может привести к большому количеству трафика, а буфер сетевой карты не может обработать этот трафик, поэтому вы можете почувствовать некоторое отставание.

Эта опция предназначена для простого эха. Если вы хотите убедиться, сколько памяти и времени уйдет при использовании этой опции, используйте команду timeи следите за памятью, буфером и кешем во время работы tar.

0
09.03.2018, 21:09
2 ответа

Я не думаю, что вам нужен pushd popd и т. д., потому что find выдает полные пути.

Любой подход readline будет иметь интересные результаты, если имя файла содержит символ возврата каретки, за которым следует звездочка.

Общее решение состоит в том, чтобы сгенерировать завершающийся нулем -список всех кандидатов с помощью find, отфильтровать с помощью grep, выполнить с помощью xargs:

find. -iname "*.XX" -print0 | grep -vzf keep_these.txt | xargs -0 echo rm -- # remove the echo to ACTUALLY delete files

«сохранить _эти.txt» — это список каталогов, которые необходимо исключить, по одному на строку, включая начальные и конечные косые черты, например:

/YYY/ 
/I love this directory/

Если вам не нужны регулярные выражения для идентификации ваших каталогов (только фиксированные строки ), добавьте -Fв grep.

1
28.01.2020, 04:29

Это должно работать:

find folder_root/ -name Subdir_2 -prune -o -name Subdir_3 -prune -a -type f

Если будет найден правильный набор файлов, вы можете добавить -deleteв конец команды find.

1
28.01.2020, 04:29

Теги

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