如何删除某个目录(在 Mac 终端中)- unix 中文件名的最后 n 个字符?

1 unix macos rename

我正在尝试使用“mv”重命名,因为“重命名”命令在我的 Mac 终端中不起作用。

我有一堆名为

DTM001_ACGGT-TTAGGC.fq
DTM156_GGTTG-ACAGTG.fq
Run Code Online (Sandbox Code Playgroud)

...ETC

我希望将它们重命名为

DTM001.fq
DTM156.fq
Run Code Online (Sandbox Code Playgroud)

我想更简单的方法是删除文件扩展名前的最后 13 个字符?

我尝试了这些链接:

但没有一个对我有用,也许是因为我不完全理解如何操作我的具体案例的答案,或者某些答案使用我无法访问的“重命名”命令。

小智 5

macOS 终端只是一个称为 shell 的交互式程序的接口。默认 shell 的名称是bash.

您正在寻找的称为 shell 脚本或 bash 脚本,用于重命名文件。

你提到的问题已经有答案了。重申一下:

cd directory_with_the_files
for file in *.fq; do
    mv -vn "${file}" "${file%_*}.fq"
done
Run Code Online (Sandbox Code Playgroud)

您可以在命令行中输入所有内容,或者将其放入文件中并使用以下命令执行:

bash file_containing_the_commands
Run Code Online (Sandbox Code Playgroud)

这将遍历.fq当前目录中的所有文件,并将它们重命名为您想要的名称。选项-v只是mv意味着在重命名发生时打印重命名(对于知道它正在做某事很有用),而标志-n意味着不要意外覆盖任何文件(以防您输入错误或遇到重复的数字)。

所有的魔法都发生在 中${file%_*}.fq,它说“删除第一个之后的所有内容_并添加.fq后面的”。这称为“shell 参数扩展”,您可以在Bash 参考手册中阅读更多相关信息。它的措辞有点迟钝,但以下是与这个特定用例相关的部分:

${参数%单词}

单词被扩展以产生一个模式,就像文件名扩展一样。如果模式与parameter扩展值的尾部部分匹配,则扩展的结果是删除了最短匹配模式(“%”大小写)的parameter值。