对于这样的命令,Linux的命令行合并文件
ls -rt | tail -n 100
会给最新修改的100个文件。应该使用什么命令行工具来管理此查询的结果,以便将所有显示的文件名复制到单个文件中。例如:
如果一个文件夹有100个文件,上面的命令会给我所有的文件名。我想将所有文件中的所有数据复制到单个第101个文件中。我该怎么做?
命令行到cat
到目的地的每个文件都是我正在寻找的。但我不知道从哪里开始。
对于这样的命令,Linux的命令行合并文件
ls -rt | tail -n 100
会给最新修改的100个文件。应该使用什么命令行工具来管理此查询的结果,以便将所有显示的文件名复制到单个文件中。例如:
如果一个文件夹有100个文件,上面的命令会给我所有的文件名。我想将所有文件中的所有数据复制到单个第101个文件中。我该怎么做?
命令行到cat
到目的地的每个文件都是我正在寻找的。但我不知道从哪里开始。
ls -rt | tail -n 100 | xargs cat > file
的xargs
命令从它的标准输入流反复读取文本,构建使用该文本的命令行,然后执行该命令行。
xags cat
意味着它把输入的文本作为单独的参数的每一行,并且使用每个输入行作为一个参数传递给cat
命令构造一个cat
命令。它将尽可能长地构建命令行,因此它将分叉至少一个cat
进程。
因此,cat
进程会读取您感兴趣的文件,并将其内容按顺序写入标准输出流。
> file
把文本到结果文件
我发现这很简单:
cat `ls -rt | tail -n 100` > singleFile
如果您有空格的文件名,我会建议使用GNU发现:
find . -maxdepth 1 -type f -printf '%Ts %p\n' \
| sort -nr \
| head -n100 \
| cut -d' ' -f2- \
| tr '\n' '\0' \
| xargs -0 cat > outfile
printf
参数为find
个插入上次修改时间(秒)在路径名中,这sort
降序排序,head
采取第一100个文件的前面,cut
删除修改时间戳,tr
零限定了文件列表和xargs
正确传递的文件名cat
。
请注意,如果文件名中有换行符,则不起作用。
打破文件名与他们中的空格等 – tripleee
没有空格的文件名.. –