У меня есть файл, содержащий список файлов, и я хочу выполнить две команды для каждого файла.Как выполнить несколько команд в списке файлов в bash (xargs?)
Содержание files.txt:
file1
file2
file3
Команды, которые я хочу выполнить на каждом файле, (например) ls -s
и du
.
Я хочу, чтобы выход в конечном итоге, как это:
<ls size> <du size> file1
<ls size> <du size> file2
<ls size> <du size> file3
Я знаю, как это сделать с помощью Баш скрипт, но есть способ легко сделать это на одной линии, используя замену процесса или что нибудь?
Я думал, что я мог бы сделать что-то подобное, но это не сработало:
cat files.txt | tr '\n' '\0' | xargs -0 -I{} cat <(du {}) <(ls -s {})
Это придумали с этими ошибками:
du: cannot access `{}': No such file or directory
ls: cannot access {}: No such file or directory
Есть ли способ сделать это?
Спасибо! Хорошо, мой следующий вопрос: я хочу, чтобы 'du' только префикс линии с измеренным размером. Обычным способом является 'du | cut -f1 | tr --delete '\ n'', но я не могу использовать одинарные кавычки, потому что команда 'sh' цитируется с использованием одинарных кавычек. Есть ли способ заменить все, что для части 'du'? –
localhost
Вы можете цитировать с двойными кавычками. – janos