所以我试图重命名目录中的所有文件,以便它们没有空格。我正在做一个 bash 脚本,我真的不知道该怎么做,我尝试了各种引号和转义,但我不确定什么组合可以工作。
#!/bin/bash
#change empty spaces in filenames to underlineos
lsarray="$(echo "$(pwd)""/*")"
for i in $lsarray
do
if [[ $i == *" "* ]]
then
line=$(echo $i | sed 's/ \+/\_/g')
j=$(echo $i | sed 's/ \+/\\ /g')
mv "$j" "$line"
echo "$i"
echo "$j"
echo "$line"
fi
done
因为 mv 需要“特殊变量扩展”,所以我在上面使用双引号。任何提示表示赞赏。
答案1
bash
将所有文件放入文件夹中。
for name in *; do mv "$name" "${name// /_}"; done
替换为(${name/pattern/replace}
pattern
replace
Bash 参数扩展)。如果模式以/
(此处模式为/
+ )开头Space
,它将替换所有出现的情况。然后用替换的空格mv
将文件重命名为name
新名称。
答案2
Perl 的重命名为:
rename 'y/ /_/' *