我有一些文件(几百万),我将文件列表保存在files.txt中,如下所示:
/home/user/1.txt
/home/user/2.txt
/home/user/3.txt
/home/user/4.txt
/home/user/5.txt
我需要移动所有,但在移动之前我必须合并。
我可以这样移动:
#!/bin/bash
for files in $(cat files.txt); do
mv $files /home/user/hop/
done
我可以将所有内容与cat *
合并,但我需要合并两个,如下所示:
1.txt and 2.txt merge --> 1.txt and move.
3.txt and 4.txt merge --> 3.txt and move.
5.txt --> 5.txt and move.
但我必须在移动之前合并,在/ home / user /,而不是在/ home / user / hop /
我该怎么做?
答案 0 :(得分:1)
移动后可以使用$ cat file1 file2 file3 file4 file5 file6 > out.txt
,也可以设置要合并的文件的顺序。
也适用于二进制文件。
答案 1 :(得分:1)
您可以使用此脚本:
while read -r f; do
if ((++i % 2)); then
p="$f"
else
cat "$f" >> "$p"
mv "$p" /home/user/hop/
rm "$f"
unset p
fi
done < list.txt
[[ -n $p ]] && mv "$p" /home/user/hop/