如何在 Shell 脚本中更改文件名?

如何在 Shell 脚本中更改文件名?

我有一个任务,要将一堆文件重命名为其第 1 行第 2 列的内容(一个字符串)。这些文件没有扩展名。我还必须将 .pdb 添加为每个文件的扩展名。

到目前为止我已经写了这个但它不起作用:(

#! /bin/bash
for f in sequences/*; do
mv "$f" "($ awk 'NR==1 {print=$2}').pdb";
done

我对 Shell 脚本非常陌生,仍然不知道如何使用它。任何帮助都将不胜感激!

答案1

需要注意以下几点:

  1. 命令替换的语法$( command )不是($ command )

  2. 在 awk 中打印第二个字段的语法print $2不是print=$2

  3. 您需要将文件名作为参数传递给 awk ex。awk 'NR==1 {print $2}' "$f"

还要注意,新文件将相对于当前目录而不是子目录创建sequences(您的问题中没有足够的细节来知道这是否是预期的结果)。

答案2

谢谢steeldriver!这些评论很有帮助!第三个评论才是真正的问题解决者!所以这是我最后写的脚本:

#! /bin/bash
for f in $(ls); do
mv "$f" "$( awk 'NR==1 {print $2}' "$f" ).pdb";
done

如果有人有任何“更聪明”的方法,我会非常高兴听到。

谢谢!

相关内容