3

我有一个包含文件列表的文件,我想对每个文件执行两个命令。

files.txt 的内容:

file1
file2
file3

我想对每个文件执行的命令是(例如)ls -sdu.

我希望输出最终是这样的:

<ls size> <du size> file1
<ls size> <du size> file2
<ls size> <du size> file3

我知道如何使用 bash 脚本来做到这一点,但是有没有办法在一行上轻松地做到这一点,使用进程替换之类的?

我以为我可以做这样的事情,但它没有用:

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

有没有办法做到这一点?

4

1 回答 1

3

您可以运行shwith xargs,其中可以放置多个命令,例如:

xargs -0 -I{} sh -c 'du {}; ls -s {}'
于 2016-10-30T11:31:40.593 回答