📅  最后修改于: 2023-12-03 15:39:18.554000             🧑  作者: Mango
在 Linux 中,我们经常需要将某个文件的文件夹名称附加到文件名中。 Shell/Bash 提供了一些工具和技巧,可以轻松地完成此任务。
在继续之前,您需要了解以下内容:
basename 命令用于从给定路径中提取文件名。我们可以使用该命令获取文件夹名称,并将其附加到文件名中。以下是一个示例命令:
$ cd /path/to/folder/
$ for file in *; do mv "$file" "$(basename "$(pwd)")-$file"; done
将当前工作目录更改为包含文件的文件夹。然后,我们正在遍历文件夹中的每个文件,并将文件重命名为“文件夹名称-文件名”。我们使用 basename 命令获取文件夹名称。
find 命令用于在文件系统中查找文件和目录。 我们可以使用该命令获取每个文件的所在目录,并将其附加到文件名中。以下是一个示例命令:
$ find /path/to/folder/ -type f -exec sh -c 'mv "$0" "${0%/*}/$(basename "$(dirname "$0")")-${0##*/}"' {} \;
awk 命令用于处理文本文件。我们可以使用该命令获取文件的所在目录,并将其附加到文件名中。以下是一个示例命令:
$ find /path/to/folder/ -type f | awk -F/ '{system("mv \"" $0 "\" \"" $0 "\".bak"); system("mv \"" $0 "\".bak \"" $(NF-1)"-"$NF"\"")}'
以上介绍的方法可以轻松地将文件夹名称附加到文件名中。要获得更多 Shell/Bash 相关信息,请查阅 Shell/Bash 文档。