ディレクトリ内のファイルのコピーに問題があります。
.txt
ディレクトリには多くのファイルがあり、ディレクトリに基づいてファイルをコピーしたいと思います。たとえば、次のようになります。.jpeg
.txt
direct/direct1
direct/direct2
direct1:
file.txt
file2.txt
file.jpeg
file2.jpeg
direct2:
file3.txt
file4.txt
file3.jpeg
file4.jpeg
.txt
My Copyコマンドには、各ディレクトリのファイルのみが必要です。
ベストアンサー1
.txt
ディレクトリ内のすべてのファイルをコピーするには、次のようにします。ワイルドカードパターン:
cp direct/direct1/*.txt target
これにより、.txt
ディレクトリ内のすべてのファイルがdirect/direct1
そのディレクトリにコピーされますtarget
(ディレクトリはすでに存在する必要があります)。
複数のパターンを渡すことで、複数のディレクトリからファイルをコピーできます。
cp direct/direct1/*.txt direct/direct2/*.txt target
.txt
すべてのサブディレクトリにファイルをコピーするには、そのディレクトリdirect
にワイルドカードを使用することもできます。
cp direct/*/*.txt target
特定のディレクトリからのみコピーしたい場合は、そのディレクトリにのみ一致するワイルドカードパターンを使用できます。たとえば、、、、およびdirect
4つのサブディレクトリがあり、ファイルからのみファイルをコピーしたい場合は、次のようにします。foo
bar
baz
qux
bar
baz
cp direct/ba?/*.txt target
これまでのすべての例は、それdirect
自体またはファイルをコピーしません。からファイルをコピーするdirect
には、そのファイルをリストに含める必要があります。.txt
direct
cp direct/*.txt direct/*/*.txt target
direct
すべてのサブディレクトリ、すべてのサブディレクトリなどからファイルを繰り返しコピーするには、ワイルドカードを使用できます**
(シェルでサポートされている場合)。 zshではすぐに動作しますが、強く打つ、まずを使用して有効にする必要がありますshopt -s globstar
。
cp direct/**/*.txt target
すべてのファイルはtarget
独自にコピーされるため、ディレクトリ構造は再現されません。ディレクトリ構造を再現するには、他のツールが必要です。同期(地図時間) または公園。
rsync -am --include='*.txt' --include='*/' --exclude='*' direct/ target/
cd direct && pax -rw -pe -s'/\.txt$/&/' -s'/.*//' . target/