Большинство инструментов командной строки позволяют использовать своего рода «сокращенную запись» для одновременного переключения нескольких переключателей. Как вы заметили, pv
не имеет переключателя -bartpes
(и действительно, большинство инструментов для переключателей длиннее одного символа используют -
для их вызова).
Следующие две команды эквивалентны:
pv -bartpes
pv -b -a -r -t -p -e -s
В ограниченном тесте это сработало для меня:
cat list.txt | xargs cat | xargs rm
Поскольку вы используете это для удаления файлов, вы можете сначала протестировать его с помощью недеструктивной команды -, например.
cat list.txt | xargs cat | xargs echo
Этот сценарий должен делать то, что вы хотите. Вы можете прокомментировать операторы echo
(или полностью опустить их ), если вам не нужен отчет о том, что он делает.
Удалите :
из начала оператора rm
, когда вы будете уверены, что он сделает то, что вы хотите, и тогда он действительно удалит названные файлы.
#!/bin/bash
# Look in list.txt for files containing items to delete
while IFS= read -r file
do
echo "Considering $file" >&2
# Read the path to delete from the file
path="$(cat "$file" 2>/dev/null)"
# If it looks like a pathname try to delete it
if [[ "$path" =~ ^/ ]] && [[ -f "$path" ]]
then
echo "> $path" >&2
: rm -f "$path"
fi
done <list.txt
while read TXT; do head -1 $TXT | xargs rm; done < list.txt