我想把所有文件作为一个参数在Linux上传递,但是我不能这样做。
这很管用
ls | sort -n | xargs -i pdftk {} cat output combinewd2.pdf
每个命令传递一个参数,但我希望所有参数都在一个命令中。
最佳答案
这是一种方法
pdftk $(ls | sort -n) cat output combinewd2.pdf
或者用反勾
pdftk `ls | sort -n` cat output combinewd2.pdf
正如注释中指出的,这将不适用于包含空格的文件名。在这种情况下,您可以使用
eval
eval pdftk $(while IFS= read -r file; do
echo \"$file\"
done < <(ls | sort -n)) cat output combinewd2.pdf
假设有两个名为“0 foo”和“1 bar”的文件,那么eval的结果将是所需的命令,文件名用双引号括起来:
pdftk " 0 foo " " 1 bar " cat output combinewd2.pdf
如果文件名可能包含换行符,则使用
find
命令,请参阅@andrewdotn答案注释中@joeytwidle的讨论。以下解决方案还使用
sed
命令转义双引号来处理带双引号的文件名:eval pdftk $(while IFS= read -r -d '' file; do
echo \"$file\"
done < <(find . -maxdepth 1 -type f -print0 | \
sed 's/"/\\"/g'| sort -zn)) cat output combinewd2.pdf
关于linux - 如何在Linux中的命令中间传递带有xargs的所有参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58530307/