awkを介してパイプされたlsコマンドからディレクトリ権限を削除する方法は? [閉鎖]

awkを介してパイプされたlsコマンドからディレクトリ権限を削除する方法は? [閉鎖]

私のZSHカスタム設定には次の機能があります。

cll() { ls -AlhG "$@" | awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf(" %0o ",k);print}'; }

次のように出力されます。

➜  test cll
total 32
644 -rw-r--r--    1 work  admin     0B Oct  7 18:55 .hidden
644 -rw-r--r--    1 work  admin   480B Aug 22  2016 gulpfile.js
644 -rw-r--r--    1 work  admin   149B Jan  7  2017 index.php
755 drwxr-xr-x  247 work  admin   8.2K Aug 22  2016 node_modules
644 -rw-r--r--    1 work  admin   1.0K Aug 22  2016 test.less
644 -rw-r--r--    1 work  admin   664B Aug 22  2016 test.min.css
755 -rwxr-xr-x    1 work  admin     0B Oct  7 18:54 try

色もサポートしているので、私の実行可能ファイルなどの色が良いです:)

-rw-r--r--権限分析列(例:)を削除したいです。だから私は次のように見えたいです。

644    1 work  admin     0B Oct  7 18:55 .hidden
644    1 work  admin   480B Aug 22  2016 gulpfile.js
644    1 work  admin   149B Jan  7  2017 index.php
755  247 work  admin   8.2K Aug 22  2016 node_modules
644    1 work  admin   1.0K Aug 22  2016 test.less
644    1 work  admin   664B Aug 22  2016 test.min.css
755    1 work  admin     0B Oct  7 18:54 try

私はそれを妨げようとしましたが、私がしたことはすべてそれを破壊しました。私はパイプを通さずに全く異なるアプローチを選ぶことを望んでいますawk


最後の解決策:

この問題に興味を持ってくれた@Skaperenに感謝しますcut。この関数をデュアルパイプで接続しましたが、うまく動作します!これで出力は次のようになります。

➜  test cll
total
 644  work  admin     0B Oct  7 18:55 .hidden
 644  work  admin   480B Aug 22  2016 gulpfile.js
 644  work  admin   149B Jan  7  2017 index.php
 755  work  admin   8.2K Aug 22  2016 node_modules
 644  work  admin   1.0K Aug 22  2016 test.less
 644  work  admin   664B Aug 22  2016 test.min.css
 755  work  admin     0B Oct  7 18:54 try

これは私の機能ですaliases.zsh(カスタム設定)。

cll() { ls -AlhG "$@" | awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf(" %0o ",k);print}' | cut -c 1-5,21-; }

完璧にする唯一の方法は、「ディレクトリ」、「ファイル」、「symlink」などであることを確認するためにカスタム列を追加できることです。

答え1

コマンドを介してパイプしますcut -c 1-3,14-。調整が必要な場合は、数値を調整してください。詳細を確認してくださいman cut

関連情報