我在Samba服务器上的目录/子目录中有很多包含特殊字符的文件。问题是,当我尝试使用Windows查看文件时,文件(包含特殊字符)不可见。因此,我在下面编写了命令来更改带有特殊字符的文件名,但是将重命名的文件放回目录/子目录并不能正常工作:
find . -type f -exec rename -v 's/[^a-zA-Z0-9 &](?=[^.]*\.)/_/g' '{}' \;
在底部,我发布当前目录,其中包含要重命名的文件:
./dir 1/fil[special char]e3.jpg
./dir 1/another dir2/m[special char]r.file1.txt
./dir 1/another dir2/file[special char]2.doc
./dir 3/next dir4/dir 5/fi[special char]le5.xml
./file 4.zip
期望-使用上述命令(dirs / subdirs中的文件)后:
./dir 1/fil_e 3.jpg
./dir 1/another dir2/m_r_file1.txt
./dir 1/another dir2/file_2.doc
./dir 3/next dir4/dir 5/fi_le5.xml
./file 4.zip
现实-我在其中运行命令的文件夹中的文件:
__dir 1_fil_e 3.jpg
__dir 1_another dir 2_m_r_file1.txt
__dir 1_another dir 2_file_2.doc
__dir 3_next dir4_dir 5_fi_le5.xml
__file 4.zip
我有两个问题:
如果有,请使用-execdir
选项find
代替-exec
。
-exec
以每个路径作为参数从命令的根目录运行命令-execdir
使用每个文件名作为参数在目标目录中运行命令因此,
find . -type f -execdir rename -v 's/[^a-zA-Z0-9 &](?=[^.]*\.)/_/g' '{}' \;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句