
フォルダ「All」があります
AllFolders
F1
some_file_20170315_xyz.txt
some_file_20170314_xyz.txt
....
F2
some_other_file_20170315_abc.txt
some_other_file_20170314_abc.txt
...
...
Fn
特定の日付に一致するすべてのファイルを別の空のフォルダにコピーして、フォルダ構造もコピーされ、次のようになるようにするにはどうすればよいですか?
Folder_20170315
F1
some_file_20170315_xyz.txt
F2
some_other_file_20170315_abc.txt
答え1
1 つの方法は、find
と を使用することですcp
。
find . -iname '*20170315*' -exec cp --parents {} /tmp/Folder_20170315 \;
宛先フォルダはすでに存在している必要があります。 必要に応じて、その作成をスクリプト化することもできます。
ファイル名を確認したいようですが、find
ファイルの日付を確認するのにも使用できます。
答え2
は Mac では利用できないためcp --parents
、同様の問題を解決するために次の 2 つのコマンドを使用しました。
find . -name '*.example' | xargs -I FOO dirname FOO | xargs -I FOO mkdir -p /new/root/directory/FOO
find . -name '*.example' | xargs -I FOO cp FOO /new/root/directory/FOO
最初のコマンドはディレクトリ ツリーを作成します。2 番目のコマンドはファイルをコピーします。
これは がfind
高速であることを前提としています。 がfind
パフォーマンスのボトルネックである場合は、さらに最適化する必要があります。 たとえば、操作を関数に移動することができます。