Bash 在(最后一个)目录后重命名文件

Bash 在(最后一个)目录后重命名文件,bash,batch-rename,Bash,Batch Rename,我正在尝试将bash中的文件重命名为其最新文件名。结构如下: directories..../Test1/abc.txt directories..../Test2/abc.txt directories..../Test3/abc.txt 我想和你在一起 directories..../Test1/Test1.txt directories..../Test2/Test2.txt directories..../Test3/Test3.txt 现在我被困在这里: pathname=/mnt

我正在尝试将bash中的文件重命名为其最新文件名。结构如下:

directories..../Test1/abc.txt
directories..../Test2/abc.txt
directories..../Test3/abc.txt
我想和你在一起

directories..../Test1/Test1.txt
directories..../Test2/Test2.txt
directories..../Test3/Test3.txt
现在我被困在这里:

pathname=/mnt/grid/*

for file in /mnt/grid/*/*.txt; do
    mv "$file" "$(dirname "$file")/$(basename ${pathname}.txt)"
done

要查找包含文件的目录名,请运行
basename“$(dirname“$file”)”
。例如:

$ file=/tmp/foo/bar.txt
$ basename "$(dirname "$file")"
foo
这样就不需要
路径名
,循环体可以简单地

echo "$file" "$(dirname "$file")/$(basename "$(dirname "$file")").txt"

(如果看起来正确,将
echo
替换为
mv

要查找包含文件的目录名,请运行
basename“$(dirname“$file”)”
。例如:

$ file=/tmp/foo/bar.txt
$ basename "$(dirname "$file")"
foo
这样就不需要
路径名
,循环体可以简单地

echo "$file" "$(dirname "$file")/$(basename "$(dirname "$file")").txt"

(如果这看起来正确的话,将
echo
替换为
mv

热提示-在您的
mv
之前抛出
echo
进行调试,然后再承诺实际做任何事情。热提示-在您的
mv
之前抛出
进行调试,谢谢。这就成功了!!:)节省了我很多时间!非常感谢。这就成功了!!:)节省了我很多时间!