コマンドにパイプする前に、find
の出力をアルファベット順にソートできる必要があります。 | sort |
betweenが機能しなかったので、どうすればよいですか?
find folder1 folder2 -name "*.txt" -print0 | xargs -0 myCommand
通常どおりfind
を使用し、NULで行を区切ります。 GNU sort
は-zスイッチでこれらを処理できます:
find . -print0 | sort -z | xargs -r0 yourcommand
sort
の一部のバージョンには-z
オプション。nullで終了するレコードを許可します。
find folder1 folder2 -name "*.txt" -print0 | sort -z | xargs -r0 myCommand
さらに、それを行うための高レベルのスクリプトを書くこともできます:
find folder1 folder2 -name "*.txt" -print0 | python -c 'import sys; sys.stdout.write("\0".join(sorted(sys.stdin.read().split("\0"))))' | xargs -r0 myCommand
-r
オプションをxargs
に追加して、myCommand
が引数付きで呼び出されるようにします。
Sort#には-n
フラグが必要だと思います#
男の並べ替えによると:
-n, --numeric-sort
compare according to string numerical value
編集
Print0はこれと関係があるかもしれません。私はこれをテストしました。 print0を取り出し、-z
フラグを使用して、文字列を並べ替えてnullで終了できます。
GNU Parallel http://www.gnu.org/software/parallel/ がインストールされている場合、これを行うことができます:
find folder1 folder2 -name "*.txt" -print |
sort |
parallel myCommand
GNU Parallelをインストールするだけで、
wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
chmod 755 parallel
cp parallel sem
GNU Parallelの紹介ビデオをご覧ください:詳細は https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1