这有效:
find . -name "*.1" -print0 | xargs -0 cat > list.txt
但是当我尝试对文件名进行排序时,删除换行符,管道传输给cat的文件名列表看起来与之前相同但已排序:
find . -name "*.1" | sort | sed ':a;N;$!ba;s/\n//g' | xargs -0 cat > list.txt
但是,cat会返回此错误:
: No such file or directory
答案 0 :(得分:2)
您的xargs语句需要空终止条目。
find . -name '*.1' | sort | tr '\n' ' ' | xargs cat > list.txt
如果你的文件名或目录有空格,那么是的,使用空终止方式。
答案 1 :(得分:1)
一直使用nul终结符:
find . -name "*.1" -print0 | sort -z | xargs -0 cat > list.txt
您的尝试失败了,因为您刚刚删除了所有换行符(有效地连接了所有文件名)。这在终端中呈现与NUL分隔的文件名相同的方式,但不会以相同的方式工作。