根据封闭目录更改文件名

根据封闭目录更改文件名

请原谅新手问题,但我有许多独特的目录,每个目录都包含一个通用名称的文件。

在此输入图像描述

我想做的是将文件移动并重命名到一个目录中

最好使用通配符,但我想您也可以生成一个列表并循环遍历它。

帮助将不胜感激。

答案1

尝试做这样的事情,

for d in ${PATH_OF_YOUR_DIRECTORY}/*/ ; do
    mv ${d}index.html ${PATH_WHERE_YOU_HAVE_TO_MOVE}/$(basename ${d}).html
done

答案2

从问题中并不清楚如何这些文件应该被重命名,所以我假设应该通过将原始目录的名称附加到它们的原始名称来重命名它们。

下面的代码假设您的工作目录包含子目录,并且每个子目录都有该index.html文件,如问题所示。这些index.html文件将被移动到一个名为 的新目录allfiles

mkdir allfiles || exit

for pathname in */index.html
do
    mv -- "$pathname" "allfiles/${pathname%/index.html}-index.html"
done

pathname变量将保存类似 的路径名A-Dwelling-Place/index.html,并且参数扩展将从该路径名的末尾${pathname%/index.html}删除该位。/index.html

您可以改为迭代目录而不是文件,

mkdir allfiles || exit

for dirname in */
do
    mv -- "$dirname"/index.html "${dirname%/}-index.html"
done

在这种情况下,dirname变量将保存诸如A-Dwelling-Place/, 之类的路径名,${dirname%/}并将删除结尾的斜杠字符。

相关内容