コマンドstatのスパース形式

コマンドstatのスパース形式

私のディレクトリの状態を確認したいと思います。

    $ ls
    Foo   Bar  Zoo

ステータスを確認してください

    $ ls | xargs stat -x
      File: "Zoo"
      Size: 384          FileType: Directory
      Mode: (0755/drwxr-xr-x)         Uid: (  501/ ..)  Gid: (   20/   ..)
    Device: 1,4   Inode: 8603392907    Links: 12
    Access: Fri Mar 30 09:12:06 2018
    Modify: Wed Mar 28 10:07:32 2018
    Change: Wed Mar 28 10:07:32 2018
      File: "Bar"
      Size: 160          FileType: Directory
      Mode: (0755/drwxr-xr-x)         Uid: (  501/  ..)  Gid: (   20/   ..)
    Device: 1,4   Inode: 8604964551    Links: 5
    Access: Fri Mar 30 09:12:06 2018
    Modify: Thu Mar 29 20:48:46 2018
    Change: Thu Mar 29 20:48:46 2018
      File: "Zoo"
      Size: 416          FileType: Directory
      Mode: (0755/drwxr-xr-x)         Uid: (  501/  ..)  Gid: (   20/   ..)
    Device: 1,4   Inode: 8603830641    Links: 13
    Access: Fri Mar 30 09:28:54 2018
    Modify: Fri Mar 30 09:28:54 2018
    Change: Fri Mar 30 09:28:54 2018

フォーマットは密集しているため、各ファイルまたはディレクトリを視覚的に区別するためにスパースなフォーマットを好みます。

    $ ls | xargs stat -x
      File: "Foo"
      Size: 384          FileType: Directory
      Mode: (0755/drwxr-xr-x)         Uid: (  501/ ..)  Gid: (   20/   ..)
    Device: 1,4   Inode: 8603392907    Links: 12
    Access: Fri Mar 30 09:12:06 2018
    Modify: Wed Mar 28 10:07:32 2018
    Change: Wed Mar 28 10:07:32 2018

      File: "Bar"
      Size: 160          FileType: Directory
      Mode: (0755/drwxr-xr-x)         Uid: (  501/  ..)  Gid: (   20/   ..)
    Device: 1,4   Inode: 8604964551    Links: 5
    Access: Fri Mar 30 09:12:06 2018
    Modify: Thu Mar 29 20:48:46 2018
    Change: Thu Mar 29 20:48:46 2018

      File: "Zoo"
      Size: 416          FileType: Directory
      Mode: (0755/drwxr-xr-x)         Uid: (  501/  ..)  Gid: (   20/   ..)
    Device: 1,4   Inode: 8603830641    Links: 13
    Access: Fri Mar 30 09:28:54 2018
    Modify: Fri Mar 30 09:28:54 2018
    Change: Fri Mar 30 09:28:54 2018

達成する方法?

答え1

BSD statを使用しているので、この-fオプションを使用して、必要な末尾の改行文字を含む型を明示的に指定できます。書式文字列全体を手動で作成するのは-x少し面倒なので、ここで得られた書式文字列があります。ソースから、文字列に結合:

'  File: "%N"%n  Size: %-11z  FileType: %HT%n  Mode: (%OMp%03OLp/%.10Sp)         Uid: (%5u/%8Su)  Gid: (%5g/%8Sg)%nDevice: %Hd,%Ld   Inode: %i    Links: %l%nAccess: %Sa%nModify: %Sm%nChange: %Sc'

%n希望の効果を得るには、最後にいくつか追加します。

$ stat_format='  File: "%N"%n  Size: %-11z  FileType: %HT%n  Mode: (%OMp%03OLp/%.10Sp)         Uid: (%5u/%8Su)  Gid: (%5g/%8Sg)%nDevice: %Hd,%Ld   Inode: %i    Links: %l%nAccess: %Sa%nModify: %Sm%nChange: %Sc%n%n'
$ stat -f "${stat_format}"  .zshrc .bashrc
  File: ".zshrc"
  Size: 5878         FileType: Regular File
  Mode: (0644/-rw-r--r--)         Uid: (  502/muru)  Gid: (   20/   muru)
Device: 1,5   Inode: 8596072804    Links: 1
Access: Mar 30 11:40:18 2018
Modify: Mar 26 13:34:14 2018
Change: Mar 26 13:34:14 2018

  File: ".bashrc"
  Size: 3768         FileType: Regular File
  Mode: (0644/-rw-r--r--)         Uid: (  502/muru)  Gid: (   20/   muru)
Device: 1,5   Inode: 8593701774    Links: 1
Access: Mar 30 11:40:18 2018
Modify: Jan 28 11:15:12 2018
Change: Jan 28 11:15:12 2018

答え2

必要なことを行う方法はいくつかあります。最も単純なものの1つは次のとおりです。

$ ls | xargs stat -x | sed 'n;n;n;n;n;n;s/$/\n/' 

私が使用しているシステムが出力オプションをサポートしていないため、-sの数がn;1つ減る可能性があることに注意してください。-x

関連情報