use*_*918 2 bash sed shell-script
所以我试图重命名目录中的所有文件,以便它们没有空格。我正在做一个 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
Run Code Online (Sandbox Code Playgroud)
因为 mv 需要“特殊变量扩展”我在上面使用双引号。任何提示表示赞赏。
到bash所有文件夹到。
for name in *; do mv "$name" "${name// /_}"; done
Run Code Online (Sandbox Code Playgroud)
的${name/pattern/replace}内容替换pattern到replace(猛砸参数扩展)。如果模式以/(这里模式是/+ Space)开头,它会替换所有出现的情况。然后用替换的空格mv将文件重命名name为新名称。