在unix中批量复制/移动文件?

rak*_*ake 4 command-line cp rename

有没有办法在unix中批量复制/移动文件?我认为这可能是一个选择,cp/mv但我找不到任何方法来做到这一点。

Lek*_*eyn 5

cpmv都是分别复制文件和移动文件的好工具。结合 shell 结构(如for file in *; do ...; done)或find,它们变得更加强大。

如果我正确理解了您的目的,那么您已经提取了如下文件:

somedir/file.png
somedir/file.txt
Run Code Online (Sandbox Code Playgroud)

并希望将所有文件移动到父目录中,使其看起来像:

file.png
file.txt
Run Code Online (Sandbox Code Playgroud)

使用shell通配符,假设你在目录中somedir,你可以使用:

mv * ../
Run Code Online (Sandbox Code Playgroud)

*是一个 glob 模式,它扩展到当前目录中的所有文件。如果您有隐藏文件(文件.名中带有前导的文件和目录),请使用shopt -s dotglobin bash)。

我之前提到find过。如果您有一个文件树,例如:

somedir/000.txt
somedir/a/001.txt
somedir/a/004.txt
somedir/b/003.txt
somedir/b/002.txt
somedir/whatever/somethingunique.txt
Run Code Online (Sandbox Code Playgroud)

并且想要将所有文件移动到一个目录中(例如,seconddir),请使用:

find -exec mv {} seconddir/ \;
Run Code Online (Sandbox Code Playgroud)

这假设所有文件名都是唯一的,否则文件将被覆盖。