从文件名中删除前导和尾随空格

Remove leading and tailing whitespaces from filename

我需要一些关于 Ubuntu 14.04 中的 bash 命令的帮助。

我有一个包含许多子文件夹的文件夹,并且一些文件夹和文件名有前导或尾部空格。我喜欢重命名这些文件夹和文件,但使用相同的文件名,只是文件名的开头和结尾没有空格。就像递归文件重命名或类似的东西。我已经用 sed 试过了,但我没有得到它应该的 运行。

我希望有人能帮助我。

应该这样做:

shopt -s extglob
while IFS= read -r -d '' f; do
    d=${f%/*} b=${f##*/*([[:space:]])} b=${b%%+([[:space:]])}
    echo mv -v -- "$f" "$d/$b"
done < <(
    find -depth \( -name '[[:space:]]*' -o -name '*[[:space:]]' \) -print0
)

正如所写,它不会做任何事情,它只会回应将要执行的 mv。如果您对此感到满意,请删除 echo