Если вы используете опцию -v
, tar будет использовать немного больше памяти и запишет ее на /dev/console
или любой активный дисплей. Вы можете проверить результат с помощью команды time
.
Но если вы чувствуете, что при подключении к удаленному серверу, например, через SSH, это создает тяжелую работу, это может быть связано с плохим подключением к серверу. Пока вы вводите tar -xvf
, процесс запускается на сервере и отправляет вывод консоли на ваш экран. Это может привести к большому количеству трафика, а буфер сетевой карты не может обработать этот трафик, поэтому вы можете почувствовать некоторое отставание.
Эта опция предназначена для простого эха. Если вы хотите убедиться, сколько памяти и времени уйдет при использовании этой опции, используйте команду time
и следите за памятью, буфером и кешем во время работы tar.
Я не думаю, что вам нужен 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.
Это должно работать:
find folder_root/ -name Subdir_2 -prune -o -name Subdir_3 -prune -a -type f
Если будет найден правильный набор файлов, вы можете добавить -delete
в конец команды find
.