关于如何读取目录中的文件的基本问题

关于如何读取目录中的文件的基本问题

这是一个初学者的问题:我正在尝试编写一个 .sh 文件来自动重命名目录中的文件。

该文件看起来类似于

for fileName in directory
do
    mv fileName "NewPrefix"+fileName
done

我正在思考如何写这个 for fileName in directory部分。

我尝试了以下操作:

dir = '.'
for fileName in dir

这是有效的,但每当我运行这个脚本时,我就会得到dir: cannot access =: No such file or directory.

为什么?

答案1

您的代码存在几个问题:

  • Bash 变量使用$VAR,注意$前面的 。如果省略美元符号,它将被视为常规字符串。
  • Bash 文件名通配符需要通配符(*?等)。您的示例.将匹配文件夹.,即当前文件夹。
  • 变量用 来设置VAR=VALUE。等号周围没有空格。VALUE如果有空格,则必须用引号引起来。
  • 字符串连接自动发生。符号在该位置+插入文字。+
  • 除非有理由不这样做,否则变量应始终用双引号引起来。

考虑到这些要点,这里是您的脚本的工作版本。

cd /path/to/folder

for file in ./*
do
    mv "$file" "NewPrefix$file"
done

If 条件

如果条件使用如下:

if [[ "$file" == "New"* ]]
then
    # Do something here
fi

请注意星号是外部双引号。

相关内容