一意の名前を持つファイルがあるとします(例:スクリーンショット20180509143013.png)/media/SD256にコピーしたいです。
文書/メディア/ドライブ1/ユーザー/名前/写真/スクリーンショット/Screenshot20180509143013.pngナビゲートしたくない特定のサブディレクトリレベルで停止しました。/メディア/ドライブ1/ユーザー/名前/イメージ/スクリーンショット/一意の名前を持つファイルを探します。
代わりに、作業ディレクトリが/media/drive1/のときに次のコマンドを実行したいと思います。
copy --find-filename-then-copy Screenshot20180509143*3.png /dev/media/SD256/DestinationFolder
まず、ファイルを見つけてコピーするコマンドはありますか?
答え1
使用find
:
find . -type f -name Screenshot20180509143013.png -exec cp {} /dev/media/SD256/DestinationFolder ';'
これはまさにその名前の現在のディレクトリの中または下にあるすべての一般的なファイルを探しますScreenshot20180509143013.png
。見つかったファイルはにコピーされます/dev/media/SD256/DestinationFolder
。同じ名前のファイルが複数ある場合(ないと仮定すると)、ファイルは互いに上書きされます。ターゲットディレクトリ。
答え2
またはzsh
または(または後)または後fish
または:ksh -o globstar
bash -O globstar
shopt -s globstar
bash
tcsh
set globstar
yash -o extended-glob
cp -- **/Screenshot20180509143*3.png /dev/media/SD256/DestinationFolder
globstar は**
構文を使用して再帰検索を実行します。 globの残りの部分(ファイル名パターン)が一意であれば、目的の結果を得ることができます。たとえば、...3*3
質問の前半のファイル名の代わりにあなたの例からコピーしました。Screenshot20180509143013.png
気づく:
fish
4.3 以前のバージョンの bash は、反復時にシンボリックリンクに従います。zsh
、tcsh
またはを使用すると、この動作を代わりにyash
使用できます。***
**
fish
ファイルが現在のディレクトリにある場合、ファイルが見つかりません。- 隠しファイルと隠しディレクトリにあるファイルは考慮されません。多くのシェルには
dotglob
それを再度有効にするオプションがあります。(D)
のグローバル修飾子を参照してくださいzsh
。 - パターンの末尾に追加すること
zsh
もできます。コピーのみを行うグローバル修飾子です。([1])
[1]
最初ファイルを一致させます。 -i
また、このオプションは、ファイルが複数のディレクトリにある場合に誤って上書きされるのを防ぎます。cp
答え3
ZTE
を使用している場合は、次のようにワイルドカードをzsh
使用できます。cp
zsh
cp **/Screenshot20180509143013.png /dev/media/SD256/DestinationFolder
**/Screenshot20180509143013.png
Screenshot20180509143013.png
現在のディレクトリから再帰的に検索を試みます。
汎用
find
一般的な目的には常に+を使用できますcp
。
cp "$(find ./ -type f -name "<picture_name>" )" "<destination>"
find
- ファイルを検索します。
./
- 現在のディレクトリから検索します。
-type f
- 通常のファイルに検索を制限します。
-name "<picture_name>"
- 名前付きファイルの検索<picture_name>
(*
inは<picture_name>
すべての順序と一致するために使用できます)
"$(find ./ -type f -name "<picture_name>" )"
- コードのこの部分をstdout
offind
コマンドで置き換えます。
cp "$(find ./ -type f -name "<picture_name>" )" <destination>
- ファイルパス"$(find ./ -type f -name "<picture_name>" )"
をにコピーします<destination>
。