我有以下脚本,当我得到一堆需要重命名为包含它们的目录名的文件时,我通常会使用它.
现在的问题是我需要将文件重命名为两个级别的目录.如何获取祖父目录以使其工作?
有了以下我得到的错误就像这个例子:"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)