2018年1月17日水曜日

【ワンライナー】カレントディレクトリ配下のディレクトリ群をzip

【ワンライナー】カレントディレクトリ配下のディレクトリ群をzip


find ./* -maxdepth 1 -type d | xargs -P254 -I@ zip -qr "@.zip" "@"
  • findコマンド
    • -maxdepthオプションで階層を指定。
      • 今回の-maxdepth 1の場合、探しに行くのは1階層まで。
    • -typeオプションで対象を指定。
      • dでディレクトリ、fでファイルを示す。
  • xargsコマンド
    • 今回はパイプ|から渡された標準入力を処理している。
    • -Iオプションで、標準入力から受け取った内容を展開する。
      • 今回の-I@の場合、zip -qr "@.zip" "@"は以下のように展開される。
        • zip -qr ディレクトリ名.zip ディレクトリ名
    • -Pオプションで、複数プロセスを立ち上げ並列処理を実施する。
      • 今回の-P254の場合、254個まで並列化する。

昔はこんな感じでやってました。拙い感じが懐かしいです。

ls | while read LINE; do zip -qr "$LINE".zip "$LINE"; done