首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有一种使用ls + awk、sed、grep或类似工具获取path/ to /file的方法?

有没有一种使用ls + awk、sed、grep或类似工具获取path/ to /file的方法?
EN

Stack Overflow用户
提问于 2010-12-04 00:16:31
回答 2查看 1.4K关注 0票数 0

我想递归地搜索一个目录,并输出:

文件名日期路径大小

我什么都有但Path...which是$$$$buster..。

到目前为止,我的命令如下:

代码语言:javascript
复制
ls -lThR {DIRECTORY_NAME_HERE} | awk '/^-/ {print $10 " " $6 " " $7 " " $8 " " $5}'

我希望有办法将这一命令与以下内容结合起来:

代码语言:javascript
复制
find ./{DIRECTORY_NAME_HERE} -type f 

它只显示/path/to/filename itself...no其他元数据afaik。

任何不需要编程语言的ideas...hopefully?

编辑:假设文件是5个字节,下面是我想要的确切输出:

myfile.txt 12月2日10:58 /path 5

UPDATE:下面是我最后得到的命令:

代码语言:javascript
复制
find ./{DIRECTORY_NAME_HERE} -type f -ls | 
while read f1 blocks perms blocks owner group size mon day third file; 
do echo `basename $file` `ls -lrt $file | tr -s " " | cut -d" " -f6-8` `dirname $file` `ls -lrt $file | tr -s " " | cut -d" " -f-5`; done

如果有人能改进的话,那就太好了,但这很管用.

EN

回答 2

Stack Overflow用户

发布于 2010-12-04 01:45:57

还可以使用find的-printf特性来显示所需文件的正确属性:

代码语言:javascript
复制
find {DIRECTORY_NAME_HERE} -type f -printf  '%f %Tb %Td %TH:%TM %h %s\n'

我得到了这样的结果:

代码语言:javascript
复制
config Nov 10 10:02 /etc/w3m 1185
mailcap Nov 10 10:02 /etc/w3m 44
hosts.allow Apr 29 05:25 /etc 580
rsyslog.conf Feb 24 10:26 /etc 1217
user-dirs.conf Apr 16 15:03 /etc/xdg 414
user-dirs.defaults Apr 16 15:03 /etc/xdg 418
票数 2
EN

Stack Overflow用户

发布于 2010-12-04 19:15:52

我会在这个任务中使用Perl:

代码语言:javascript
复制
#!/opt/local/bin/perl -w

use File::Find;
use POSIX qw(strftime);

find(\&wanted, ($DIRECTORY_NAME_HERE));
sub wanted {
  ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime) = stat;
  printf("%s %s %s %d\n", $_, 
    strftime("%b %e %H:%M %Y", localtime($mtime)),
    $File::Find::dir,
    $size);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4351096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档