在linux上使用bash时,如何编写一个递归遍历共享的命令并在每个文件上运行命令以获取文件类型和大小,权限等,然后将所有这些输出到文件中?递归遍历Samba共享?
1
A
回答
1
CIFS共享挂载看起来像linux shell中的常规目录树。
因此,您需要搜索的命令是通用的。
从基本目录,
find . -type f -exec ls -lsrt {} \; > file.txt
好吧,这不会给你的文件类型的细节;
可以用每个文件上的-exec file filename
完成。
0
mount -v | grep smbfs | awk '{print $3}' | xargs ls -lsR
你可以重定向到一个文件。
+0
如何包含ou输入每个文件上的文件命令? – 2009-07-22 12:39:25
0
mount -v | awk '/smbfs/{
cmd="ls -lsR "$3
while((cmd | getline d)>0){
print d "->file "$3
}
close(cmd)
}'
0
find $(mount -t smbfs | awk '{print $3}') -mount -type f -ls -execdir file {} \;
...
33597911 4 -rw-rw-r-- 2 peter peter 5 Dec 6 00:09 ./test.d\ ir/base
./base: ASCII text
3662 4 -rw-rw-r-- 2 peter peter 4 Dec 6 02:26 ./test.txt...
./test.txt...: ASCII text
3661 0 -rw-rw-r-- 2 peter peter 0 Dec 6 02:45 ./foo.txt
./foo.txt: empty
...
如果您使用-exec文件{} +,它会一次使用多个参数运行文件,但随后的输出不会与发现的-ls
输出很好地交错。 (GNU发现的-execdir {} +
目前的行为一样-execdir {} \;
,由于bug workaround。如果你想在file
输出的完整路径,在它上面的-ls
输出使用-exec file {} \;
以及。
find -ls
输出是不太一样ls -l
,因为它包含了inode块的前两个字段
相关问题
- 1. 递归遍历HashMap?
- 2. 树遍历递归
- 3. 递归字遍历
- 4. 如何递归遍历XPath?
- 5. 递归遍历的Java
- 6. 树遍历递归计算
- 7. 树遍历中的递归
- 8. 遍历表递归查询
- 9. 树的遍历,递归
- 10. 递归目录遍历
- 11. 递归遍历字典
- 12. Arangodb AQL递归图遍历
- 13. 递归循环遍历类
- 14. 递归遍历二叉树
- 15. 在rails上共享samba
- 16. 自动Samba共享脚本
- 17. 非递归邮递订单遍历
- 18. CGAL遍历面共享一个边缘
- 19. 递归射线遍历算法 - 遍历k-d树
- 20. 在c中无递归的预遍历遍历
- 21. 递归遍历DBIx :: Class关系
- 22. 基于变量的XSL递归遍历
- 23. 递归函数来遍历对象
- 24. AQL中的递归遍历(ArangoDb)
- 25. Boost:图递归遍历和图副本
- 26. 为了遍历递归循环
- 27. MSSQL中的递归分层遍历
- 28. 递归函数来遍历二叉树
- 29. 递归遍历未知结构的NSDictionary
- 30. 迷宫遍历算法递归
第一个“。”是起始目录 - 所以给定的命令将在当前目录中启动,但您可以同样使用“find/path/to/share ...“ – caf 2009-07-22 05:00:31
@caf,非常真实。而且,我在回答他的其他问题时已经谈到了这个问题。 – nik 2009-07-22 05:44:19