在(最后一个)目录之后重命名文件
Rename file after (last) directory
我正在尝试将 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
这样就不需要pathname
,循环体可以简单的
echo "$file" "$(dirname "$file")/$(basename "$(dirname "$file")").txt"
(如果看起来正确,请将 echo
替换为 mv
。)
我正在尝试将 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
这样就不需要pathname
,循环体可以简单的
echo "$file" "$(dirname "$file")/$(basename "$(dirname "$file")").txt"
(如果看起来正确,请将 echo
替换为 mv
。)