*.tif
すべてのファイルを ./old から ./new にコピーしようとしています。./old にはさまざまなファイルを含むサブディレクトリが多数ありますが、./new にはフォルダー ツリーのない TIF ファイルのみが必要です。
そこで私は試してみた
cp -vR ./old/*.TIF ./new`
しかし、エラーが発生しました:
No such file or directory "./old/*.TIF"
何が間違っているのでしょうか?
答え1
これについては検索を使用してくださいfind . -name "*.TIF" -exec cp {} new \;
find
ファイルを検索するために使用されます。このコマンドは、ファイル名がfind
ここで終わるファイルを示しています。シェル拡張の二重引用符を覚えておいてください。したがって、すべてのファイルを検索するのは簡単です。 .
-name
.tif
tif
find . -name "*.tif"
./2/3/3.tif
./2/2.tif
./1.tif
次に、ファイルで何かを行うために使用します。-exec
この場合、cp
見つかったファイルは{}
ターゲットディレクトリにnew
エスケープされたセミコロンで続きます。\;
答え2
次のようになります。古いディレクトリに入る必要があります:
cd old
cp -R *.tif ../new
答え3
.tif
ディレクトリ内にファイルがない可能性がありますold
。
さらに、簡単なスクリプトを使用してファイルのリストを取得し、コピーすることもできます。
find /old -type f | xargs grep *.tif
リストをお渡しします。
あなたはこれを行うことができます:
for i in `find /old -type f | xargs grep *.tif`
do
cp $i /new
done;