linux 文件名含有空格如何批量操作

本文介绍如何使用find命令查找包含空格的文件名,并通过脚本实现将空格替换为下划线的过程。但需注意,现有脚本仅能替换文件名中间的空格,无法处理文件名末尾的空格。

使用find命令查找文件名中包含空格的文件。
[root@DB-Server kerry]# find . -type f -name “* *” -print
./test.txt
./tes t.txt 那么如何将这些空格替换掉呢? 下面脚本可以替换文件中间的空格,用下划线替换空格,但是只能替换文件中间的空格,并不能替换文件名后面的空格。如下测试所示:

find . -type f -name "* *" -print |
while read name; do
na=$(echo $name | tr ' ' '_')
if [[ $name != $na ]]; then
mv "$name" "$na"
fi
done 

原文链接

### 在Linux中重命名带有空格的文件 在Linux系统中,可以通过终端命令来批量修改包含空格文件名。以下是具体方法和相关说明: #### 使用`rename`命令 `rename`命令是Linux系统中用于批量重命名文件的强大工具。如果系统未预装该命令,可以先通过包管理器安装它。例如,在基于Debian的系统(如Ubuntu)中,可以运行以下命令进行安装: ```bash sudo apt-get install rename ``` 安装完成后,可以使用以下命令将文件名中的空格替换为指定字符(如下划线`_`): ```bash rename 's/ /_/g' * ``` 此命令会递归地将当前目录下的所有文件名中的空格替换为下划线[^1]。 #### 使用`find`和`xargs`组合 如果需要处理嵌套目录中的文件,可以结合`find`和`xargs`命令。以下是一个示例命令: ```bash find . -depth -name "* *" -execdir rename 's/ /_/g' "{}" \; ``` 这条命令的作用是从当前目录开始查找所有包含空格的文件,并将其名称中的空格替换为下划线。`-depth`选项确保子目录在父目录之前被处理,以避免路径问题[^3]。 #### 使用`for`循环 对于更简单的场景,也可以使用`for`循环逐一处理文件。以下是一个示例脚本: ```bash for file in *; do if [[ "$file" == *" "* ]]; then mv "$file" "${file// /_}" fi done ``` 这段脚本会遍历当前目录下的所有文件,如果文件名中包含空格,则将其替换为下划线[^4]。 #### 注意事项 - 在执行批量重命名操作前,建议备份重要文件以防意外。 - 如果文件名中包含特殊字符(如引号或换行符),可能需要额外处理以避免解析错误。 ### 示例代码 以下是一个综合示例,展示如何递归地将目录中所有文件名中的空格替换为下划线: ```bash find . -depth -name "* *" | while IFS= read -r file; do newfile="${file// /_}"; mv -- "$file" "$newfile"; done ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值