小编use*_*155的帖子

在bash脚本中获取祖父目录 - 为其路径中的目录重命名文件

我有以下脚本,当我得到一堆需要重命名为包含它们的目录名的文件时,我通常会使用它.

现在的问题是我需要将文件重命名为两个级别的目录.如何获取祖父目录以使其工作?

有了以下我得到的错误就像这个例子:"mv:无法移动./48711/zoom/zoom.jpg./48711/zoom/./48711/zoom.jpg:没有这样的文件或目录".这是在CentOS 5.6上运行的.

我希望最终文件命名为:48711.jpg

#!/bin/bash

function dirnametofilename() {
  for f in $*; do
    bn=$(basename "$f")
    ext="${bn##*.}"
    filepath=$(dirname "$f")
    dirname=$(basename "$filepath")
    mv "$f" "$filepath/$dirname.$ext"
  done
}

export -f dirnametofilename

find . -name "*.jpg" -exec bash -c 'dirnametofilename "{}"'  \;

find .
Run Code Online (Sandbox Code Playgroud)

linux bash centos path batch-rename

3
推荐指数
2
解决办法
7789
查看次数

标签 统计

bash ×1

batch-rename ×1

centos ×1

linux ×1

path ×1