質問

ようにしているフォーマットの出力 ls -la に含まれるファイルの変更に出力していく、これは彼らが現在のように見え:

ls -la | awk {'print $6,$7,$8,$9,$10'} | grep "Dec" | sort -r | head -5
Dec 4 20:15 folder/
Dec 4 19:51 ./
Dec 4 17:42 Folder\ John/
Dec 4 16:19 Homework\ MAT\ 08/
Dec 4 16:05 Folder\ Smith/

す。

設定はどのように行うのですか上のような正規表現には含めないようなもの"./" や"../",

またどのようにしたいので省略し、スラッシュ"\"用のフォルダにスペースです。Idなどのスラッシュします。これによりシェルコマンド?やって使用Perlを変更するのです。いい日時を残しています。のお役に立てるようお願い申し上げます!

のボックスは、linuxおよびこれによSSH。

編集:

ニ私のこれまでにマークgbacon本)

ls -laF | grep -vE ' ..?/?$' | awk '{ for (i=6; i<=NF; i++) printf("%s ", $i); printf("\n"); } ' | grep "Dec" | sort -r | head -5

原作に忠実(キャラブの交換"\"でものとする。その他により、これはパクリ等に該当までこのポイント!

役に立ちましたか?

解決

利用できる find いてほとんどの作業を専用に作成する方法もあります。

find -mindepth 1 -maxdepth 1 -printf "%Tb %Td %TH:%TM %f\n" | grep "^Dec" | sort -r

の親ディレクトリ(..)に含まれないデフォルトです。の -mindepth 1 く、現在のディレクトリ(.).を除去することができる -maxdepth 1 で再帰的ございますのでご注意下さい変化を %f%p のパスにファイル名を指定します。

これらの分野の -printf:

  • %Tb-短月の名前
  • %Td-日月
  • %TM:%TM-時間分
  • %fファイル名

grep いくらいが丁度いい試合を行の先頭ではな試合という名前のファイルが"点"に変更された月です。

他のヒント

チェックして、あなたの「1!」コマンドは何か他のものにエイリアスされていないことを確認してください。一般的に、「生」のlsはあなたのディレクトリの/を与えません。また、スペースをエスケープする必要があります。

明らかに何かがawkは空白でフィールドを分割する傾向があるので、それは、\文字があるために何が、あなたのawkは、それらのファイルを印刷するためにはあなたのためのスペースをエスケープされます。

スペースは、ファイル名はあなたがここでやろうとしているしているように簡単スクリプトとパイプマッシュアップを書いて挫折するために特別に設計されている。

あなたはlsの出力をフィルタリングすることができます:

ls -la | grep -vE ' ..?/?$' | awk {'print $6,$7,$8,$9,$10'} | grep "Dec" | sort -r | head -5

あなたはPerlを使用したコンテンツなら:

ls -la | perl -lane 's/\\ / /g;
                     print "@F[5..9]"
                       if $F[8] !~ m!^..?/?$! &&
                          $F[5] eq "Dec"'

ここであなたの答えの一つです

  

私は

、「./」や「../」などが含まれないように、正規表現のようなものを設定することができますどのように

の代わりにls -lAls -laを使用します。

代わりに、列の固定数をプリントアウトの

、あなたは、行の終わりをt列6からすべてをプリントアウトすることができます:

ls -lA | awk '{ for (i=6; i<=NF; i++) printf("%s ", $i); printf("\n"); } '

私はスペースがバックスラッシュ得ることはありませんので、あなたはそれを得ている理由を私は知りません。それを修正するには、これを追加することができます:

| sed 's/\\//g'

すべてのgrepするとSEDSとは何?

ls -laF | awk '!/\.\.\/$/ && !/\.\/$/ &&/Dec/ { for (i=6; i<=NF; i++) printf("%s ", $i); printf("\n"); }'

だけでなく、あなたが.を追加することにより、..grep -v "\." | grep -v "\.\."をドロップすることができます。

残りの部分についてはよく分からない。

これは実際にはawkとgrep / sedを持つパイプラインを見るために私をいらだた。 awkは非常に強力なライン処理ツールです。

ls -laF | awk '
    / \.\.?\/$/ {next}
    / Dec / {for (i=1; i<=5; i++) $i = ""; print} 
' | sort -r | head -5
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top