我正在尝试将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
答案 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
。)