![重命名命令错误,文件不再显示在 Windows 网络驱动器中](https://linux22.com/image/621438/%E9%87%8D%E5%91%BD%E5%90%8D%E5%91%BD%E4%BB%A4%E9%94%99%E8%AF%AF%EF%BC%8C%E6%96%87%E4%BB%B6%E4%B8%8D%E5%86%8D%E6%98%BE%E7%A4%BA%E5%9C%A8%20Windows%20%E7%BD%91%E7%BB%9C%E9%A9%B1%E5%8A%A8%E5%99%A8%E4%B8%AD.png)
我使用重命名命令时犯了错误
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
)。
免责声明:在对数据执行任何操作之前,请务必备份您的文件或至少尝试使用一堆测试文件。