ツリーの6つのディレクトリにあるファイルに対していくつかの処理(コピーなど)を実行したいと思います。各ディレクトリレベルのディレクトリ名は完全に不規則であり(任意の数字と文字)、最後のレベルで私のファイルがあるディレクトリには約20のディレクトリがあります。
ケースの例:
cp /000157/DZW123/AHG345/DFR987/000RE7/0025RTZ/file.xxx /destination/file.xxx
同じ場合、他の最後のレベル(19の異なるレベルがあります):
cp /000157/DZW123/AHG345/DFR987/000RE7/1298FGT/file.xxx /destination/file.xxx
しかし、他の多くのケースでは全く異なります。
cp /001154/CVS456/SAQ452/FRO921/000VG5/0032RRT/file.xxx /destination/file.xxx
状況が異なるため、屋根ふきは役に立ちません。名前がどのように指定されても、ツリー内の各ブランチの6つのディレクトリに直接移動できるソリューションがある場合は、これが一番良いと思います。 cd + nを試しましたが、うまくいきません。
答え1
find
このタスクに使用された
find / -mindepth 7 -maxdepth 7 -iname '*.txt' -exec echo cp {} /destination \;
*.txt
必要に応じてパターンを修正しecho
たり、画面に表示される内容が好きな場合は削除してください。
答え2
ディレクトリ構造の最後のレベルにファイルのみがあると仮定すると、以下のようにfind
withを使用してxargs
ファイルをコピーできます。
find . -type f -mindepth 7 -maxdepth 7 -print0 | xargs -0 cp -t /some/destination/directory
これは、サブディレクトリ名のスペースとファイル名のスペースにも当てはまります。