如何对 bash 中的文件列表执行多个命令(xargs?)
How to perform multiple commands on a list of files in 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
我知道如何使用 bash 脚本来完成此操作,但是有没有一种方法可以使用进程替换或其他方式轻松地在一行中完成此操作?
我以为我可以做这样的事情,但是没有成功:
cat files.txt | tr '\n' '[=13=]' | xargs -0 -I{} cat <(du {} ) <(ls -s {})
出现了这些错误:
du: cannot access `{}': No such file or directory
ls: cannot access {}: No such file or directory
有办法吗?
你可以运行一个sh
和xargs
,你可以在其中放置多个命令,例如:
xargs -0 -I{} sh -c 'du {}; ls -s {}'
我有一个包含文件列表的文件,我想对每个文件执行两个命令。
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' '[=13=]' | xargs -0 -I{} cat <(du {} ) <(ls -s {})
出现了这些错误:
du: cannot access `{}': No such file or directory
ls: cannot access {}: No such file or directory
有办法吗?
你可以运行一个sh
和xargs
,你可以在其中放置多个命令,例如:
xargs -0 -I{} sh -c 'du {}; ls -s {}'