在最后一个目录之后重命名文件

时间:2018-07-11 01:11:03

标签: 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/grid/*

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

1 个答案:

答案 0 :(得分:2)

要查找包含文件的目录的名称,请运行ID INTEGER,..other columns.., PRIMARY KEY (ID)。例如:

basename "$(dirname "$file")"

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

pathname

(如果看起来正确,请用echo "$file" "$(dirname "$file")/$(basename "$(dirname "$file")").txt" 替换echo。)