我有一个包含文件列表的文件,我想对每个文件执行两个命令。
files.txt 的内容:
file1
file2
file3
我想对每个文件执行的命令是(例如)ls -s
和 du
。
我希望输出最终是这样的:
<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
有办法吗?
最佳答案
您可以使用xargs
运行sh
,您可以在其中放置多个命令,例如:
xargs -0 -I{} sh -c 'du {}; ls -s {}'
关于bash - 如何对 bash 中的文件列表执行多个命令(xargs?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40328543/