如何重命名(取消隐藏)目录中的所有文件和子目录?

卢克曼·哈基姆(Lukman Hakim)

我想打一个脚本来“取消隐藏”所有文件和目录某个目录内一气呵成,如./unhide test

test/
├── sub1
│   └── .hiddenfile1
└── sub2
    └── .hiddendir
        ├── .hiddendirsub
        ├── .hiddenfile2
        └── not.hidden

期望的结果:

test/
├── sub1
│   └── hiddenfile1
└── sub2
    └── hiddendir
        ├── hiddendirsub
        ├── hiddenfile2
        └── not.hidden

我怎样才能做到这一点?

我对此还很陌生,并且一直在尝试使用寻求解决方案find,但由于-execrename或(或mv陷入了困境因为我仍在努力理解这种组合的工作原理。:(所以,如果这里有人可以提供解决方案和详细说明,我将不胜感激。谢谢。

点心

您可以find按照以下步骤进行操作:

find /path/to/test -depth -name ".*" -execdir rename -n 's|/\.|/|' {} +

如果它显示您要删除的-n选项,则仅打印重命名操作

解释说明

  • -depth–让find流程从下到上,在其父目录之前重命名文件
  • -name ".*"–允许find搜索以点开头的文件(所有内容都是文件)–点在此处为文字,因为这不是正则表达式
  • -execdir … +在匹配文件的目录中执行
  • rename 's|/\.|/|' {}–替换首次出现的“ /”。从匹配文件的路径(find其占位符为{})中以“ /”开头,实际上是从文件名开头删除点。
    例如,rename 's|/\.|/|' ./.hiddenfile1在您的情况下,将其重命名为./hiddenfile1

运行示例

$ tree -a
.
├── sub1
│   └── .hiddenfile1
└── sub2
    └── .hiddendir
        ├── .hiddendirsub
        ├── .hiddenfile2
        └── not.hidden

$ find ~/test -depth -name ".*" -execdir rename 's|/\.|/|' {} +
$ tree -a
.
├── sub1
│   └── hiddenfile1
└── sub2
    └── hiddendir
        ├── hiddendirsub
        ├── hiddenfile2
        └── not.hidden

脚本中的用法

在脚本中,您可以简单地使用位置参数而不是路径,它可以是相对的也可以是绝对的–请记住正确引用

#!/bin/bash
find "$1" -depth -name ".*" -execdir rename -n 's|/\.|/|' {} +

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

搜索和重命名和MV所有目录和子目录中的文件

如何在Windows中的目录和子目录中查找所有头文件

对于目录,将具有子目录名称+旧文件名的子目录中的文件重命名为新目录

如何在子目录中重命名图像?

如何动态从给定目录和所有子目录导入所有* .py文件?

如何在不删除bash目录的情况下删除目录中的所有文件和子目录?

将子目录中的pdf文件重命名为子目录的名称

使用Ruby重命名所有子目录

如何根据原始文件的更改重命名复制目录中的文件和子目录?

重命名子目录中的所有文件

重命名csh shell中的所有子目录

如何根据目录和子目录中的txt文件复制和重命名文件

PHP使用子目录作为新文件名重命名所有文件

如何使用vim打开当前目录和所有子目录中的所有文件?

从所有子目录移动特定文件,并根据子目录重命名

如何报告所有子目录中的文件数?

解压子目录中的所有文件,并在其原始目录后重命名

重命名不同子目录中的所有文件

如何在php中列出目录,子目录和所有文件

如何遍历所有子目录中的文件?

解析目录和所有子目录中的所有XML文件

重命名多个子目录中的同名文件

重命名所有子目录中的文件和文件夹以删除字符

批量重命名子目录的所有 gif 文件 rename() php

重命名目录和子目录中的所有文件

python重命名子目录中的所有文件

截断和重命名目录中的子目录

使用 Powershell 重命名当前目录中包含文件和子目录的所有文件夹名称

重命名子目录中的所有文件