Chinaunix

标题: 如何使用ls命令输出的文件带上绝对路径? [打印本页]

作者: zwfnet    时间: 2014-05-29 11:37
标题: 如何使用ls命令输出的文件带上绝对路径?
各位帮忙看一下怎么做
需求: 我要查看一个五层目录 /1/11/[0-10]/file  file的文件大小,但是file是分布在0-10个文件夹里面,我想用while做循环的时候发下ls不能带上绝对路径。
例如:
ls /1/11/0/file1
  /1/11/1/file1
  /1/11/2/file1

ls /1/11/[0-10]/file/ >>  a
ls出来的a的文件里只能是:
/1/11/0 :
file1
file2
file3
.......
/1/11/1 :
file1
file2
file3
......
.
.
/1/11/10 :
file1
file2
file3
我需要的效果是a文件里内容为:
/1/11/0/file1
/1/11/1/file1
/1/11/2/file1
......
/1/11/10/file1

好像可以用awk实现,但是不太熟悉,还请高手解答,谢谢!

BS:我最终的目的是想查看file文件的大小,先ls出所有file的目录,然后用while来du一下各个file再排序,现在是卡在了[0-10]这个多个文件夹里,当然那,分步做是可以达到目的,但是请高手看一下有没有更好的办法解决?


作者: todayhero    时间: 2014-05-29 11:48
@zwfnet

你是需要这样的功能吗?
  1. [root@svn252 ~]# find /etc/ -name "*" | xargs du -h
  2. 16K     /etc/selinux/targeted/contexts/users
  3. 184K    /etc/selinux/targeted/contexts/files
  4. 372K    /etc/selinux/targeted/contexts
  5. 1.9M    /etc/selinux/targeted/policy
  6. 8.0K    /etc/selinux/targeted/modules/previous/modules
  7. 16K     /etc/selinux/targeted/modules/previous
  8. 4.7M    /etc/selinux/targeted/modules/active/modules
  9. 40M     /etc/selinux/targeted/modules/active
  10. 40M     /etc/selinux/targeted/modules
  11. 43M     /etc/selinux/targeted
  12. 43M     /etc/selinux
  13. 128K    /etc/sgml
复制代码

作者: zwfnet    时间: 2014-05-29 12:47
回复 2# todayhero


或者说 我只需要目录
/etc/selinux/targeted/

到这一级就好了,find命令的话,会把目录下的所有文件都find出来,这样数量级太大了,因为我的file下面还有很多个文件,find就做了很多无用功,且效率很低。
还能用别的办法吗?










作者: 非凡公子    时间: 2014-05-29 13:14
ls -R /etc/selinux|grep \/

是你想要的么?
作者: Shell_HAT    时间: 2014-05-29 13:16
回复 3# zwfnet


find /etc/  -maxdepth 1 -name "*" | xargs du -h
作者: zwfnet    时间: 2014-05-29 17:38
回复 4# 非凡公子


    这个貌似执行不了!返回为空,grep -v貌似这个反检索是什么意思?
作者: zwfnet    时间: 2014-05-29 17:44
回复 5# Shell_HAT


    GOOD,大侠这个命令很好用,哈哈,thanks,这个可以很轻松的解决我的问题,我用了另外一种相当复杂的脚本来做,现在一句话就可以了。非常感谢!!!
作者: 用户名注册后不能更改    时间: 2014-05-30 03:02
回复 6# zwfnet

\/是\和/,不是V……
作者: 用户名注册后不能更改    时间: 2014-05-30 03:03
回复 2# todayhero

-name "*"
这个参数是什么意思?
作者: todayhero    时间: 2014-05-30 04:38
[@]用户名注册后不能更改[/@]

任意了。
作者: blackold    时间: 2014-05-30 08:14
搞得太复杂了吧。

  1. ls /etc/selinux/targeted/
复制代码

作者: zwfnet    时间: 2014-05-30 15:03
回复 8# 用户名注册后不能更改

还是楼上的那个find命令好用些,这个-R 会把下面的目录也一并显示出来,当然用你这个命令搜出来的结果也可以用awk再去掉不需要的部分,但是貌似效率就不那么高了。谢谢大哥。
   
作者: zwfnet    时间: 2014-06-03 10:49
回复 2# todayhero


   可以用前面这部分,|xarg du -h这个会把目录下所有的文件大小单独列出来,我只是想要macdeth -1这个目录的大小即可,du -s 或者du -sh 我都试过,发现du出来结果的大小跟实际大小会不一样,所以,我只能find出一个文件,然后再用while循环去du -s 这个目录得出的结果才比较准确。
作者: huang6894    时间: 2014-06-03 17:01
本帖最后由 huang6894 于 2014-06-03 17:01 编辑
  1. for i in `ls /1/11/[0-10]/file1`
  2. do
  3. echo `readlink -f $i`
  4. done
复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2