我在文件夹中有许多文件,我想用下划线替换所有文件名中的每个空格字符。我怎样才能做到这一点?
答案 0 :(得分:139)
这应该这样做:
for file in *; do mv "$file" `echo $file | tr ' ' '_'` ; done
答案 1 :(得分:57)
我更喜欢使用命令'rename',它采用Perl风格的正则表达式:
rename "s/ /_/g" *
你可以使用-n标志进行干运行:
rename -n "s/ /_/g" *
答案 2 :(得分:11)
使用sh ...
for i in *' '*; do mv "$i" `echo $i | sed -e 's/ /_/g'`; done
如果您想在拉动扳机之前尝试此操作,只需将mv
更改为echo mv
。
答案 3 :(得分:4)
如果您想要递归递归,该怎么办?你会怎么做?
好吧,我自己就找到了答案。没有最优雅的解决方案(尝试重命名不符合条件的文件)但有效。 (顺便说一句,在我的情况下,我需要使用'%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
答案 4 :(得分:3)
如果你使用bash:
for file in *; do mv "$file" ${file// /_}; done
答案 5 :(得分:1)
尝试这样的事情,假设你的所有文件都是.txt:
for files in *.txt; do mv “$files” `echo $files | tr ‘ ‘ ‘_’`; done
答案 6 :(得分:1)
引用你的变量:
for file in *; do echo mv "'$file'" "${file// /_}"; done
删除“echo”以进行实际重命名。
答案 7 :(得分:1)
The easiest way to replace a string (space character in your case) with another string in Linux
is using sed
. You can do it as follows
sed -i 's/\s/_/g' *
Hope this helps.
答案 8 :(得分:1)
这是另一种解决方案:
ls | awk '{printf("\"%s\"\n", $0)}' | sed 'p; s/\ /_/g' | xargs -n2 mv
答案 9 :(得分:0)
我相信您的答案位于 Replace spaces in filenames with underscores 。
答案 10 :(得分:0)
要重命名使用.py
扩展名的所有文件,
find . -iname "*.py" -type f | xargs -I% rename "s/ /_/g" "%"
示例输出,
$ find . -iname "*.py" -type f
./Sample File.py
./Sample/Sample File.py
$ find . -iname "*.py" -type f | xargs -I% rename "s/ /_/g" "%"
$ find . -iname "*.py" -type f
./Sample/Sample_File.py
./Sample_File.py
答案 11 :(得分:0)
这会将每个文件夹中的 ' '
替换为 '_'
,并且在 Linux 中使用 Python >= 3.5 递归地替换文件名。将 path_to_your_folder
更改为您的路径。
仅列出文件和文件夹:
python -c "import glob;[print(x) for x in glob.glob('path_to_your_folder/**', recursive=True)]"
将每个文件夹和文件名中的 ' '
替换为 '_'
python -c "import os;import glob;[os.rename(x,x.replace(' ','_')) for x in glob.glob('path_to_your_folder/**', recursive=True)]"
使用 Python < 3.5,您可以安装 glob2
pip install glob2
python -c "import os;import glob2;[os.rename(x,x.replace(' ','_')) for x in glob2.glob('path_to_your_folder/**')]"