我使用重命名命令时犯了错误
find . -type f -exec rename 's/[^A-Za-z0-9._]//g' {} +
此后,文件不再像以前一样位于其文件夹下,并且每个文件前面都有 .。现在我的客户看不到这些文件。一旦我删除 .,他们就可以看到这些文件了。
我怎样才能从文件中删除 . ?像这样:
.finacialyear2008half.doc
到
finacialyear2008half.doc
请帮帮我!我需要快速修复。
答案1
find . -type f -exec rename 's/\.//' '{}' \;
考虑一下重命名的 -n 参数:它只是显示删除它之后会做什么!
答案2
假设您正在使用 bash,您可以循环遍历文件,用替换当前文件夹中所有文件的文件名中第一次出现/.
的。/
for filename in $(find . -maxdepth 1 -type f)
do
mv -v $filename ${filename/\/.//}
done
这假设您不需要递归重命名文件,并且仅在当前目录中有效(-maxdepth 1
)。
免责声明:在对数据执行任何操作之前,请务必备份您的文件或至少尝试使用一堆测试文件。