如何在一个目录及其sun目录中所有扩展名的文件上运行dos2unix?
标准的find程序正是为这类任务而设计的。大致如下:
find Folder/ -type f -exec dos2unix '{}' '+'
This command
递归地探索Folder/, 选择f类型的所有文件(常
第一种解决方案(一般) 标准的find程序正是为这类任务而设计的。大致如下:
This command 递归地探索Folder/, 选择f类型的所有文件(常规文件,与目录、符号链接和其他类型的特殊文件相比), 并对所有选定的文件名执行dos2unix。 '{}'是一个占位符,表示您希望在命令中插入文件名的位置,'+'终止所述命令。您还可以为每个文件名运行一次dos2unix(通过将'+'更改为';'),但是由于dos2unix接受任意数量的输入参数UNIX 目录,因此最好使用它(因为它避免产生许多进程)。 find有更多的选项,您可以在手册页(上面的链接)中找到它们。 第二种解决方案(针对您的问题) 如果您的shell是Bash,Bash支持递归通配符(其他shell,如zsh,可能也有类似的特性)。默认情况下,它处于禁用状态,因此必须更改shell选项:
然后,**是一个通配符,它递归地选择所有内容(包括目录和其他特殊文件,因此您可能需要对其进行筛选)。之后,您可以尝试:
如果您想让通配符真正选择所有内容,包括以点开头的文件名(隐藏文件),还需要设置另一个选项:shopt -s dotglob。 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |