Whimlog

寝るまでが一日

ディレクトリから指定の拡張子のファイルをコピーする

ファイルの整理がしたい

ファイルの拡張子を指定して、必要なファイルのみをコピーしたかったので色々調べてみました。 備忘録としてまとめます。

ディレクトリの内容確認

以下のスクリプトを親ディレクトリで実行します。 ファイルの拡張子とそれぞれのファイル数がチェックできます。

$ find . -type f -print | sed -e 's/^.*\///' | grep '\.' | sed -e 's/^.*\.//' | sort | uniq -c | sort -nr

ファイルのコピー

同じく親ディレクトリ上で以下を実行します。 find で extension に指定したファイル一覧を取得します。次に cpio コマンドでファイルをコピーします。destinationディレクトリが無い場合は自動で作成されるので便利です。

$ find . -name "*.<extension>" | cpio -pd ~/path/to/destination

まとめ

mp3 だけとか、 jpg だけ取り出したい。サブディレクトリがいっぱいあって大変という場合に役に立つと思います。 余談ですが、high sierra にしてからファイルのコピーが早くなった気がします。APFSの恩恵かな?