gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 00:52:03 25 4
gpt4 key购买 nike

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

现在的问题是我需要将文件重命名为上两层的目录。我怎样才能得到祖 parent 目录来完成这项工作?

在下面的例子中,我得到了类似这个例子的错误:“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 .

最佳答案

另一种方法是使用

(cd ../../; pwd)

如果这是在任何顶级路径中执行的,例如 //usr//usr/share/,您将获得 / 的有效目录,但是当您更深一层时,您将开始看到结果:/usr/share/man/ 将返回 /usr /my/super/deep/path/is/awesome/ 将返回 /my/super/deep/path,等等。

您也可以将其存储在变量中:

GRANDDADDY="$(cd ../../; pwd)"

然后将其用于脚本的其余部分。

关于linux - 在 bash 脚本中获取祖父目录 - 重命名路径中目录的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21270624/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com