我有一个文件名列表,存储在名为
我想将该列表中每个文件的内容复制到另一个名为
我应该如何通过命令行完成这个操作?
list_of_files.txt
的文件中。我想将该列表中每个文件的内容复制到另一个名为
all_compounds.sdf
的文件中。我应该如何通过命令行完成这个操作?
list_of_files.txt
的文件中。all_compounds.sdf
的文件中。xargs
的东西:xargs -d '\n' -a list_of_files.txt cat > all_compounds.sdf
while IFS= read -r file; do cat "$file"; done < list_of_files.txt > all_compounds.sdf
IFS
设置为仅包含换行符,并禁用通配符扩展(通配符展开)。(set -f; IFS=$'\n'; cat $(cat list_of_files.txt) > all_compounds.sdf)
()
用于在子shell中运行此命令,以确保您当前的shell不受这些更改的影响。cat $(cat list_of_files.txt) >> all_compounds.sdf
cat
命令用于连接文件。它还会打印文件的内容。
使用命令替换command2 $(command1)
,您可以将command1
(cat list...
)的输出传递给command2
(cat
),从而连接这些文件。
然后使用重定向>>
将输出发送到文件而不是打印到标准输出。如果您想要查看输出,请改用tee
:
cat $(cat list_of_files.txt) | tee -a all_compounds.sdf
>>
而不是>
,并且在文件已经存在的情况下,使用带有-a
开关的tee
命令 - 这样可以将内容追加到文件中,而不是覆盖它。)$ awk '{cmd=sprintf("cat \"%s\"",$0); system(cmd)}' file_list.txt
cat "文件名.txt"
,然后将其传递给system()
。$ ls
file1.txt file2.txt file3 with space.txt file_list.txt
$ awk '{cmd=sprintf("cat \"%s\"",$0); system(cmd)}' file_list.txt
Hi, I'm file2
Hi, I'm file1
Hi, I'm file3
>
操作符将最终输出重定向到摘要文件中。awk '{cmd=sprintf("cat \"%s\"",$0); system(cmd)}' file_list.txt > output.txt
"$(cat list_of_files.txt)"
。 - Sergiy Kolodyazhnyycat
将把整个列表作为一个参数。 - muru