这个问题在其他问题中有点独特
我有一个带有一堆文件夹的目录,它们用句点命名以分隔每个单词
例如:foo.bar.2011.useless.words
最后两个单词总是无用的,所以我想从第二个到最后一个句点开始截断
不确定措辞......
非常感谢
答案 0 :(得分:1)
for file in *.*.*
do
mv "$file" "${file%.*.*}"
done
答案 1 :(得分:0)
如果带点的文件夹只有一个深度,请使用Ignacio的答案。但是,如果您要重命名的文件夹存在于/toplevel/subdir1/foo.bar.baz.blah/
等子目录中,那么您需要使用下面的find
命令。除非您有Bash 4.x
,否则您可以使用shopt -s globstar
选项。
find /top/level/dir -type d -name '*.*.*' -exec sh -c 'for arg; do echo mv "$arg" "${arg%.*.*}"; done' _ {} +
我在那里添加了一个echo
,这样你就可以做一个干运行而不做任何改动。如果您对输出感到满意,请删除echo
并再次运行以使更改成为永久更改。
修改强> 通过无耻地窃取Ignacio的PE
删除了我的$tmp
var