【发布时间】:2014-02-11 18:49:50
【问题描述】:
我有以下脚本,当我得到一堆需要重命名为包含它们的目录名称的文件时,我通常会使用它。
现在的问题是我需要将文件重命名为上两级的目录。我怎样才能得到祖父母目录来完成这项工作?
使用以下内容,我会收到类似此示例的错误:
“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 .
【问题讨论】:
-
使用两个句点 (
..) 向上一个目录,所以../../是祖父目录。
标签: linux bash path centos batch-rename