LS + awk、sed、grepまたは同様のツールを使用してパス/to/ファイルを取得する方法はありますか?

StackOverflow https://stackoverflow.com/questions/4351096

  •  08-10-2019
  •  | 
  •  

質問

ディレクトリを再帰的に検索し、出力を検索したいと思います。

ファイル名の日付パスサイズ

私はパス以外のすべてを手に入れました...それは$$$$バスターです。

これがこれまでの私のコマンドです:

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 あなたが望むフィールドを除外するため。

編集...あなたがそれを行うことができる別の方法は、しばらくループすることです。

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帰属
所属していません StackOverflow
scroll top