我在一个文件夹中有许多文件,并且我想用下划线替换所有文件名中的每个空格字符。我怎样才能做到这一点?Linux - 替换文件名中的空格
回答
这应做到:
for file in *; do mv "$file" `echo $file | tr ' ' '_'` ; done
虽然这可能在理论上回答这个问题,[这将是更可取的](http://meta.stackexchange.com/q/8259)在这里包括答案的基本部分并提供链接供参考。 – 2011-10-27 14:58:23
尝试是这样的,假设所有的文件都是.TXT的:
for files in *.txt; do mv “$files” `echo $files | tr ‘ ‘ ‘_’`; done
得到了以下错误 tr:翻译时必须给出两个字符 mv:缺少文件参数 尝试'mv --help'以获取更多信息。 – 2009-11-27 05:31:24
Agin错误tr:参数太多 尝试'tr --help'获取更多信息。 mv:缺少文件参数 尝试使用'mv --help'以获取更多信息。 – 2009-11-27 07:06:15
如果您使用bash:
for file in *; do mv "$file" ${file// /_}; done
当我尝试时,我得到了 mv:当移动多个文件时,最后一个参数必须是目录 尝试'mv --help'以获取更多信息。 mv:当移动多个文件时,最后一个参数必须是一个目录 尝试'mv --help'以获取更多信息。 – 2009-11-27 05:32:12
应该是'$ {FILE// _}' – soulmerge 2009-11-27 05:49:45
只能替换1个空格 – ghostdog74 2009-11-27 05:56:02
使用SH ...
for i in *' '*; do mv "$i" `echo $i | sed -e 's/ /_/g'`; done
如果您想在拉动扳机之前尝试一下,只需将mv
更改为echo mv
即可。
这一个也工作得很好 – 2009-11-27 07:03:13
引用您的变量:
for file in *; do echo mv "'$file'" "${file// /_}"; done
删除 “回声” 来完成实际的重命名。
它正确地回应了mv命令,但并未真正重命名该文件! – 2009-11-27 07:05:16
去除回声产生像 错误mv:不能stat'\'1130湖micigan view.jpg \'':没有这样的文件或目录 mv:can stat'\'1130_1_bedroom_floor_plan.jpg \'':没有这样的文件或目录 mv:can not stat'\'1130_BedPicture_8.jpg \'':没有这样的文件或目录 mv:can stat'\'1130_diningroom_table.jpg \'':没有这样的文件或目录 – 2009-11-27 07:08:33
什么是您的操作系统? – ghostdog74 2009-11-27 07:26:44
我更喜欢使用命令“重命名”,这需要Perl的正则表达式的风格:
rename "s/ /_/g" *
你可以做-n标志彩排:
rename -n "s/ /_/g" *
这将工作*如果*你有perl样式重命名而不是更简单的redhat/fedora一个 – 2009-11-27 05:56:38
Fedora版本将被重命名为“_”*' – 2009-11-27 05:57:15
'rename'在OSX中不可用。 – 2014-02-12 16:53:33
,如果你有什么想要递归地应用替换任务?你会怎么做?
嗯,我刚刚找到答案。没有最优雅的解决方案(试图重命名不符合条件的文件),但工作。 (顺便说一句,在我的情况,我需要的文件用“%20”重命名不以下划线)
#!/bin/bash
find . -type d | while read N
do
(
cd "$N"
if test "$?" = "0"
then
for file in *; do mv "$file" ${file// /%20}; done
fi
)
done
在Linux
与另一个字符串替换字符串(空格字符在您的情况),最简单的方法是使用sed
。你可以做到这一点如下
sed -i 's/\s/_/g' *
希望这会有所帮助。
我试图运行此作为脚本https://hastebin.com/xemitireri.bash,
#!/bin/bash
# https://stackoverflow.com/questions/1806868/linux-replacing-spaces-in-the-file-names
find . -type d | while read N
do
(
cd "$N"
if test "$?" = "0"
then
for file in *; do mv "$file" ${file// /_}; done
fi
)
done
我想在一个文件夹,里面有它的多个文件夹,每个中都有多个文件递归运行此。文件夹名称和文件名称中都有空格(例如,在包含“磁盘1”,“磁盘2”等“Good Album”的文件夹“Testing”上运行它。每个磁盘的文件夹都有“Song 1 .txt“,”Song 2.txt“,”Song 3.txt等)。此DID重命名文件夹,但不重命名文件夹内的文件。 我收到错误 bash:cd:./Disk 02:没有这样的文件或目录 bash:cd:./Disk 01:没有这样的文件或目录 bash:cd:。/ Disk 03:没有这样的文件或目录
这不是一个答案,而是另一个问题。请考虑提出一个新问题。 – Fabien 2017-07-13 22:32:04
- 1. 替换文件中行尾的空格
- 2. 如何在Linux中用逗号替换文本文件中多余的空格
- 3. 替换python中的空格+
- 4. Linux在文件名中查找并替换日文字符串
- 5. 文件名中的空格
- 6. msdos将所有文件重命名为小写,替换空格
- 7. 如何更换上传文件的文件名中的空格
- 8. 如何用文本文件中的空格替换标记?
- 9. 替换HTML文件中的子字符串中的空格
- 10. 用单个空格替换文件中的不同数量的空格
- 11. 方格纸替换软件:首选Linux
- 12. 转换python文件中的空格?
- 13. 在命令替换中使用find(1)和带空格的报价文件名
- 14. 如何在Linux中用空格替换前导零?
- 15. 用许多文件中的标签空格替换逗号
- 16. 用Bash脚本替换文件中的第一个空格
- 17. Python:如何用所有文件,文件夹和子文件夹的名称中的下划线替换空格?
- 18. 替换“空格的字符
- 19. 替换文件名中的unicode字符?
- 20. 带空格的文件名
- 21. PHP - 用preg替换替换tabbed空格?
- 22. 在URL中替换URL中的空格#
- 23. Flask文件名替换
- 24. 击:替换文件名
- 25. zsh文件名globbling /替换
- 26. Linux替换4个空格的选项卡
- 27. 如何替换我的manifest.json中的文件名使用rev-replace替换文件
- 28. 搜索和在Linux(SED)替换文件
- 29. 替换URL中空格的出现
- 30. 用Ruby中的空格替换%20
这不适合我。它声称存在相同的文件(使用错误的文件名)。例如。试图重命名'1 - foo.jpg',我的文件夹中已经有了'1.jpg'。 – byxor 2017-10-18 14:05:48