、多くのサブディレクトリとディレクトリaaa
があるとしbbb
、ccc
...一 これらのディレクトリのと呼ばれるファイルでありますx.txt
(ただし、私はどのディレクトリにいるのかわかりません)。しかし、これは動作しませんはbash:(!一つだけ)の未知のサブディレクトリ(?ワイルドカード)からファイルを移動
mv */x.txt {target_dir}
を:私はすべてのサブディレクトリを超えるループしてかどうかをチェックすることになったソリューションとしてNo such file or directory
は、私が使用する代替ディレクトリにそのファイルを移動したいですファイルには
[ -f ]
があり、見つかったファイルは一度移動します。
しかし、もっと簡単なソリューションがあるのだろうかと思っていましたか?あなたはエコーがファイルを見つけ、そうする場合は 'globstar' オプションを有効にすると、
shopt -s globstar
echo **/x.txt
を使用して試みることができる
globstar
If set, the pattern ** used in a pathname expansion context will match
all files and zero or more directories and subdirectories. If the
pattern is followed by a /, only directories and subdirectories match.
:bashの manページから
ありがとう、私は何千ものディレクトリと数千のファイルがあるはずです。私はファイル 'x.txt'の名前を知っています(それは一意な名前なので、そのようなファイルは一つのディレクトリにしかありません)。あなたのソリューションがより速いかどうかを確認するためにこれを試してみます。 – econ
@econ: '.'をベースディレクトリに置き換えることができます。 – sjsam
私はそれを見て良いです[ここ](http://superuser.com/questions/341232/faster-alternatives-to-find-and-locate) – sjsam