如何使用查找/重命名重命名多个文件名

胡桃夹子的命运

我在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

我有两个问题:

  1. 如何从文件名中排除路径名?
  2. 如何将文件放入目录?
罗伊马

如果有,请使用-execdir选项find代替-exec

  • -exec 以每个路径作为参数从命令的根目录运行命令
  • -execdir 使用每个文件名作为参数在目标目录中运行命令

因此,

find . -type f -execdir rename -v 's/[^a-zA-Z0-9 &](?=[^.]*\.)/_/g' '{}' \;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章