简体   繁体   中英

How can I merge before move files?

I have some files (few millions) and I keep file list in files.txt like this:

/home/user/1.txt
/home/user/2.txt
/home/user/3.txt
/home/user/4.txt
/home/user/5.txt

I need to move all, but before move I must merge too.

I can move like this:

#!/bin/bash
for files in $(cat files.txt); do
    mv $files /home/user/hop/
done

I can merge all with cat * but I need to merge by twos, like this:

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.

But I must merge before move, in /home/user/, not in /home/user/hop/

How can I do this?

You can use $ cat file1 file2 file3 file4 file5 file6 > out.txt after you moved them, with this you can also set the order of the files to be merged.

Also works for binaries.

You can use this script:

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/

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM