在 Linux 中,可以使用
mv
命令批量移动文件或目录。使用通配符选择多个文件并移动到目标位置。Linux批量移动文件和目录是一个常见的任务,通常使用命令行工具来完成,这些工具包括mv
、find
、xargs
等,以下是几种常见的方法:
1、使用mv命令结合通配符
移动多个文件到目标目录
mv file1.txt file2.txt file3.txt /path/to/destination/
移动指定后缀的文件
mv *.txt /path/to/destination/
移动指定前缀的文件
mv prefix* /path/to/destination/
移动当前目录下的所有文件夹
mv */ /path/to/destination/
2、使用find命令结合-exec参数
查找并移动所有以.txt结尾的文件
find /path/to/source -name "*.txt" -exec mv {} /path/to/destination/ \;
递归查找并移动所有文件和目录
find /path/to/source -type f -exec mv {} /path/to/destination/ \;
3、使用xargs命令
查找并移动所有以.txt结尾的文件
find /path/to/source -name "*.txt" | xargs -I {} mv {} /path/to/destination/
递归查找并移动所有文件和目录
find /path/to/source -type d | xargs -I {} mv {} /path/to/destination/
4、使用rsync命令
同步并删除源文件
rsync -av --remove-source-files /path/to/source/ /path/to/destination/
5、使用shell脚本
递归移动所有文件和子目录
#!/bin/bash source_dir="/path/to/source" target_dir="/path/to/target" mkdir -p $target_dir recursive_move() { for file in "$1"/*; do if [ -f "$file" ]; then mv "$file" "$target_dir" elif [ -d "$file" ]; then recursive_move "$file" fi done } recursive_move $source_dir
保存为脚本文件(如move_files.sh),并赋予执行权限
chmod +x move_files.sh ./move_files.sh
相关问答FAQs
1、如何在移动文件时避免覆盖目标目录中的同名文件?
在mv
命令中使用-n
参数可以避免覆盖目标目录中已存在的文件。
mv -n *.txt /path/to/destination/
或者使用-i
参数,在覆盖前提示确认:
mv -i *.txt /path/to/destination/
2、如何批量移动文件并保留其原始修改时间和权限?
在mv
命令中使用-p
选项可以保留文件的原始修改时间和权限:
mv -p *.txt /path/to/destination/
小伙伴们,上文介绍了“linux 批量移动”的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。