我需要遍历一个目录,以便从一个目录开始,并深入到不同的子目录中。不过,我也需要能够访问每个单独的文件来修改文件。是否已有命令执行此操作,还是必须编写脚本?有人可以提供一些代码来帮助我完成这项任务吗?谢谢。Unix:遍历一个目录
回答
find
命令只是它的工具。它的-exec标志或-print0与xargs -0
的组合允许对每个文件做什么的细粒度控制。
示例:在/ tmp和子目录中的所有文件中,用条的全部foo替换。
find /tmp -type f -exec sed -i -e 's/foo/bar/' '{}' ';'
你能提供一个代码示例吗?谢谢! –
有关其他详细信息,请参见[本页](http://ss64.com/bash) –
@thiton使用'sed'您不会以交互方式访问这些文件。我不认为这是@EricAnderson正在寻找的东西。 – ztank1013
这可以很容易地通过混合find
,xargs
,sed
(或其他文件修改命令)来实现。
例如: $ find /path/to/base/dir -type f -name '*.properties' | xargs sed -ie '/^#/d'
这将过滤所有的文件与文件扩展名.properties
。 xargs
命令会将find
命令生成的file path
送入sed
命令。 sed
命令将删除文件中的所有以#
开头的行(由xargs
供稿)。
这种方式的命令组合非常灵活。
例如,find
命令具有不同的参数,因此您可以按用户名,文件大小,文件路径(例如:在/ test /子文件夹下),文件修改时间进行过滤。
灵活性的另一个方面是如何以及如何更改文件。例如,sed
命令允许您在应用替换时对文件进行更改(通过正则表达式指定)。同样,您可以使用gzip
来压缩文件。等等...
我假设SearchMe
是您需要完整遍历的示例目录名称。
我也假设,因为它没有指定,你想修改的文件都是文本文件。它是否正确?
在这种情况下,我建议使用下面的命令:
find SearchMe -type f -exec vi {} \;
如果你不熟悉vi
编辑器,只需使用另一个(nano
,emacs
,kate
,kwrite
,gedit
等),它应该也能工作。
击4+
shopt -s globstar
for file in **
do
if [ -f "$file" ];then
# do some processing to your file here
# where the find command can't do conveniently
fi
done
- 1. 遍历目录
- 2. 遍历目录
- 3. 遍历两个目录
- 4. 遍历目录树
- 5. R:遍历目录
- 6. Applescript遍历目录
- 7. 目录遍历c
- 8. 如何遍历一个目录,而不进入子目录
- 9. 用php遍历目录?
- 10. Ruby中的目录遍历
- 11. 目录遍历问题c#
- 12. 使用Node.js遍历目录
- 13. 遍历目录路径
- 14. 通过http遍历目录
- 15. 目录遍历bash shell
- 16. 递归目录遍历
- 17. Perl子目录遍历
- 18. perl的遍历目录
- 19. 目录遍历攻击
- 20. 用Gulp遍历目录?
- 21. 遍历目录使用Java
- 22. 笨 - 目录遍历 - sanitize_filename()
- 23. 遍历多个目录在Groovy
- 24. 遍历对两个文件在目录
- 25. 如何遍历目录和cd到每个目录
- 26. 遍历一个特定的记录
- 27. 遍历索引和前一个项目
- 28. 遍历目录中的文件并复制到另一个目录
- 29. 遍历目录和输出文件名到一个txt文件
- 30. 遍历一个目录,但从不同的文件开始?
什么是遍历的目的是什么? – Orbling