Использование содержимого файла в виде аргументов несколько раз

Большинство инструментов командной строки позволяют использовать своего рода «сокращенную запись» для одновременного переключения нескольких переключателей. Как вы заметили, pv не имеет переключателя -bartpes (и действительно, большинство инструментов для переключателей длиннее одного символа используют - для их вызова).

Следующие две команды эквивалентны:

pv -bartpes

pv -b -a -r -t -p -e -s
1
20.04.2019, 16:27
3 ответа

В ограниченном тесте это сработало для меня:

cat list.txt | xargs cat | xargs rm

Поскольку вы используете это для удаления файлов, вы можете сначала протестировать его с помощью недеструктивной команды -, например.

cat list.txt | xargs cat | xargs echo
2
27.01.2020, 23:31

Этот сценарий должен делать то, что вы хотите. Вы можете прокомментировать операторы 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
0
27.01.2020, 23:31
while read TXT; do head -1 $TXT | xargs rm; done < list.txt
0
27.01.2020, 23:31

Теги

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