2016-03-25 8 views
0

ls -alisを使用してフォルダのコンテンツリストを作成し、awkを使用して結果をフィルタリングしました。awkが正しく動作していないフォルダを除外してください

$11 != "." && $11 != ".."に問題があります。私は、.というフォルダと..のフォルダを表示したくないが、まだここにいる。

ls --color -alis /home/user/ | 
tr -s ' ' | cut -d " " -f11 | 
awk '$1 !~"^/\./$" { print $1 }' 

私は$11 !~ "^/./$"も試しました。

+1

* '.'と '..'を除くドットファイル*を含む' -A'(大文字)を使用することで、この問題を回避できます。 –

答えて

0

Parsing output of ls is not recommendedには、空白の改行などがあり、パイプコマンドを壊す可能性があります。

printf "%s\0" * | xargs -0 ls --color -Alis 
+1

通常、ドットで始まるファイルは除外されます。おそらく '-a'を使用する目的でしたが、いくつかのシェルには異なるオプションがあります。 –

+0

非常に良い点、ありがとう@ dave_thompson_085。私はOPの要件を満たすために '-A'を使うのが良いだろうと同意します。 – anubhava

0

正規表現を引用倍増し、アンカーポイント(^$)は正規表現の内部で行ってはいけない:

awk '$11 !~ /^\.\.?$/ { print }' 
あなただけ xargsでこれ printfを使用することができますあなたの条件については

これは、フィールド11が1つまたは2つのドット(唯一)を含む行と一致しません。

awkスクリプトの問題を扱います。しかし、それがあいまいである可能性があるので、lsの出力を解析する必要があるかどうかは議論の余地があります。

関連する問題