将多个文件移动到多个到多个目录

Move multiple files to multiple to multiple directories

我有 5 个文件,名为 file1.txt、file2.txt ... file5.txt,我想将每个文件移动到名为 dir1、dir2 ... dir5 的相应目录中。

所以file1.txt被移动到dir1,file2.txt被移动到dir2等等。

有没有办法在命令行的一行中执行此操作,也许使用 mvxargs

我只是建议 xargs 因为我非常喜欢这个 answer Robert Gamble 提供的关于如何将一个文件复制到多个目录的问题。

echo dir1 dir2 dir3 | xargs -n 1 cp file1

我个人更喜欢依赖于 for 循环的解决方案,例如:

for n in {1..5}; do echo mv -- "file$n.txt" "dir$n/"; done
#                   ^^^^ remove that

这可以用 xargs 来完成,但我发现解决方案不太优雅:

seq 1 5 | xargs -n1 -I{} echo mv -- "file{}.txt" "dir{}/"
#                        ^^^^ remove that

另一种方法,如果它不一定是连续整数列表,并且 dir* 不一定已经存在。

for f in *.txt; do mkdir dir${f: -5:1}; mv $f dir${f: -5:1}/; done

使用 GNU Parallel 你会这样:

parallel mv {} {=s/file/dir/=} ::: *.txt