blu*_*ray 2 directory find rename
我的目录树如下所示 -
/media/blueray/Data/Test$ tree
.
??? What????
? ??? What????
??? What????.txt
Run Code Online (Sandbox Code Playgroud)
当我运行命令时 find . -depth | rename 's/[?<>\\:*|\"]//g'
它说 -
Can't rename ./What????/What???? ./What/What: No such file or directory
Run Code Online (Sandbox Code Playgroud)
但是,运行该命令后,目录结构变为——
/media/blueray/Data/Test$ tree
.
??? What
? ??? What????
??? What.txt
Run Code Online (Sandbox Code Playgroud)
在我看来,它find
是从树的顶部开始搜索,所以它正在失去对树的跟踪。
这里的解决方案是什么?
问题不是由 引起的find
,而是由rename
以下原因引起的:它正在处理完整路径,因此它尝试重命名./What????/What????
为./What/What
,但由于What
目录不存在(尚未)而失败。
rename
仅使用处理文件-d
名将解决此问题:
find . -depth | rename -d 's/[?<>\\:*|\"]//g'
Run Code Online (Sandbox Code Playgroud)
如果您的 版本rename
不支持该-d
选项(在 1.10 版中引入File::Rename
,假设您rename
是 Perl 版本),您find
只能通过rename
在每个目录中运行来传递文件名:
find . -depth -execdir rename 's/[?<>\\:*|\"]//g' {} +
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
148 次 |
最近记录: |