まず、これは次のように重複しません。Linux lsはファイル名の日付とサイズのみを表示します。
実際のディレクトリ名をさらに印刷したいからです。
私はいつも次のコマンドを使います。
ls -l | awk '{print $5, $9}'
各ファイルのサイズと名前を取得します。
ただし、今度はファイルディレクトリをさらに印刷する必要があります。現在のディレクトリがある場合は、次のように/path/to/somewhere
します。
somewhere/file 1234
somewhere/other-file 4567
そして同様に
file 1234
other-file 4567
それは可能ですか?
ベストアンサー1
各ファイル名の前に現在のディレクトリを追加することを意味しますか?
ls -l | awk '{printf("%s %s/%s\n", $5, ENVIRON["PWD"], $9); }'
それとも別のものですか?
いいね、確かにあなたが望むもの
$ cd /some/path/to/somewhere
$ <insert command here>
somewhere/file1 size1
somewhere/file2 size2
...
はいそれ正しいですか?
その場合(POSIXシェルを想定して)、必要な変更は次のとおりです。
ls -l | DIR=${PWD##*/} awk '{printf("%s/%s %s\n", ENVIRON["DIR"], $9, $5); }'
代わりに。
はエラーが使用中であることを示すtcsh
ため、次のようにします。Illegal variable name
ls -l | env DIR=$PWD:t:q awk '{printf("%s/%s %s\n", ENVIRON["DIR"], $9, $5); }'
代わりに。
その場合まだ動作しません。質問にプラットフォーム、シェル、awkバージョンなどを説明してください。コメントスレッドが長すぎて推測できる内容が不足しています。 :-)