Linuxコマンドラインで、.txt
1つのディレクトリ(およびそのサブディレクトリ)から(非常に大きな)ファイルのセットを別のディレクトリにコピーしたいと思います。
ディレクトリ構造をそのままにしておく必要があり、末尾がのファイル以外は無視する必要があります.txt
。
Linuxコマンドラインで、.txt
1つのディレクトリ(およびそのサブディレクトリ)から(非常に大きな)ファイルのセットを別のディレクトリにコピーしたいと思います。
ディレクトリ構造をそのままにしておく必要があり、末尾がのファイル以外は無視する必要があります.txt
。
回答:
最初にコピーしてみてはどうですか
cp -r /old/folder /new/folder
次に、新しいフォルダーに移動して実行します
find . -type f ! -iname "*.txt" -delete
あるいは単に
cp -r /old/folder /new/folder && find . -type f ! -iname "*.txt" -delete
編集:OK、フィルターするコマンドが1つ必要です(システムにcpio
コマンドがないため、これをテストしていません!)。ここで見つけました:http : //www.gnu.org/software/findutils/manual/html_mono/find.html#Copying-A-Subset-of-Files
find . -name "*.txt" -print0 |
cpio -pmd0 /dest-dir
私はまだ試していないので、これを最初にテストしてください。誰かが検証するなら、それは素晴らしいことです。
0
して、コマンドの最後(の直前)に-pmd0
追加する必要があります。-print0
find
|
macOSでも同じことをしようとしていましたが、どのオプションも実際に機能しませんでした。私が発見するまでditto
。
多くの.wavファイルをコピーし、ビデオファイルをスキップしなければなりませんでした。そこで、私が思いついたのは次のとおりです。
find . -type f -iname "*.wav" -ls -exec ditto {} /destination/folder/{} \;
find .
-現在のフォルダーで検索を実行します。cd /source/folder
開始する前に確認してください
-type f
-ファイルのみを検索するように指定します
-iname "*.wav"
-これは、大文字と小文字を区別しない* .wavを探すように指示します-ls
-これにより、作業中のファイルが表示されます。それ以外の場合は何も表示されません。-exec ditto {} /destination/folder/{} \;
-同じディレクトリツリーでファイルをコピーおよび作成するすべての作業を行います。