9

コマンドラインでカットコマンドを使用していますが、好きな出力が得られないようです。なぜ私がこれを取得しているのか分かりますか?それは私が間違っていることですか?

これは通常の出力であり、別の順序で出力したいと思います。

[root@upbvm500 root]# ls -al IDS_DIR/a | tr -s " "
-rw-r--r-- 1 root root 0 Jan 1 17:18 IDS_DIR/a
[root@upbvm500 root]#

[root@upbvm500 root]# ls -al IDS_DIR/a | tr -s " " | cut -d" " -f5,6,7,8,3,4,1
-rw-r--r-- root root 0 Jan 1 17:18

しかし、ご覧のとおり、これは期待どおりに機能していません。なぜ彼らが場所を変えているのか分かりますか?

4

3 に答える 3

25

からman cut:

選択された入力は、読み取られたのと同じ順序で書き込まれ、1 回だけ書き込まれます。

awk '{print $5,$6,$7,$8,$3,$4,$1}'の代わりに使用しcutます。

于 2013-01-01T16:56:27.987 に答える
6

他の人が述べているように、lsを解析しないでください。ファイル情報が必要な場合は、stat

stat -c "%s %y %U %G %A %n" filename

タイムスタンプを必要に応じてフォーマットするには、追加の作業が必要になる場合があります。

$ ls -l data
-rw-r--r-- 1 glennj glennj 13 2013-01-01 11:19 data
$ LC_TIME=POSIX ls -l data
-rw-r--r-- 1 glennj glennj 13 Jan  1 11:19 data

$ stat -c "%s %y %U %G %A %n" data 
13 2013-01-01 11:19:53.670015242 -0500 glennj glennj -rw-r--r-- data
$ stat -c "%s %Y %U %G %A %n" data | awk '{$2 = strftime("%b %e %H:%M", $2)} 1'
13 Jan  1 11:19 glennj glennj -rw-r--r-- data
于 2013-01-01T20:26:02.557 に答える
6

cut出力を並べ替えません。印刷する列のリストを収集し、到着したときにそれらを印刷するだけです。

Awk などの別のツールを使用して、出力列を並べ替えます。

ただし、このような場合は、の代わりにstatまたはを使用してみてください。からの出力を解析しようとすることは、一般に推奨されません。http://mywiki.wooledge.org/ParsingLsを参照してください。findlsls

于 2013-01-01T16:42:44.277 に答える