用于从文件名中删除空格的Bash脚本



我正在编写一个bash脚本,该脚本将当前目录中文件名中的空格更改为下划线。这是脚本:

#!/bin/bash

for fil in "$(pwd)"/*; do 
basefil=$(basename "$fil") #get name of file
name=${basefil// /_}

if [[ ! -f "$name" ]]; then
echo "$fil" "$name"
mv "$fil" "$name"

fi
done

问题是我得到了这样的东西:

mv: cannot move '/home/gustavolozada/Downloads/prueba' to a subdirectory of itself, 'prueba/prueba'

我只在目录中得到这个。我添加了echo "$fil" "$name"以获得更多信息,这就是它所显示的:

/home/gustavolozada/Downloads/prueba prueba

我不明白问题出在哪里,因为命令基本上是:

mv /home/gustavolozada/Downloads/prueba prueba

对我来说没有任何问题(除了它们是同一个文件之外,但我已经用if [[ ! -f "$name" ]]; then检查了目录中是否有同名文件

这只是一个奇怪的解释:由于错误案例中的name的值为prueba/prueba,但是通过basename计算的,因此它不应该包含任何斜杠。Downloads/prueba可能是符号链接吗?

相关内容

  • 没有找到相关文章

最新更新