簡體   English   中英

有沒有辦法使用ls + awk,sed,grep或類似工具獲取路徑/到/文件?

[英]Is there a way to get path/to/file with ls + awk, sed, grep or similar tools?

我想遞歸搜索目錄,並輸出:

文件名日期路徑大小

除了Path ...我什么都得到了。

到目前為止,這是我的命令:

ls -lThR {DIRECTORY_NAME_HERE} | awk '/^-/ {print $10 " " $6 " " $7 " " $8 " " $5}'

我希望有一種方法可以將該命令與:

find ./{DIRECTORY_NAME_HERE} -type f 

它只顯示/ path / to / filename本身...沒有其他元數據afaik。

有什么想法...希望不需要編程語言?

編輯 :這是我要假設文件為5字節的確切輸出:

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

更新 :這是我總結的命令:

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

如果有人可以改善它,那就太好了,但這行得通...

您是否嘗試過find ./delete -type f -ls (注意-ls -這是關鍵:-))? 然后,您應該能夠通過awk傳遞結果,以過濾出所需的字段。

編輯...另一種方法可以使用while循環,例如:

find ./delete -type f -ls | while read f1 blocks perms blocks owner group size mon day third file
do
    echo `basename $file` `dirname $file`
done

並添加所需的位。

您還可以使用find的-printf功能僅顯示所需文件的正確屬性:

find {DIRECTORY_NAME_HERE} -type f -printf  '%f %Tb %Td %TH:%TM %h %s\n'

我得到這樣的結果:

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

我將Perl用於此任務:

#!/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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM