web-dev-qa-db-ja.com

より単純な形式のfindはありますか。 -Mac OSXおよびLinuxで「* substring_of_filename *」という名前を付けますか?

Mac OS XまたはLinuxで、コマンドのより単純な形式はありますか

find . -name "*substring_of_filename*"

これは、現在のディレクトリ(または他の特定のディレクトリ)内でsubstring_of_filenameを含む名前を持つすべてのファイルを検索することです。これは一般的なことなので、Bashのエイリアスまたは関数を使用して、コマンドを短くして入力しやすくする方法はありますか?または、使用できる他の入力しやすいコマンドはありますか?

といった:

findfile . substring_of_filename

注:最初に書かれた質問が使用されました app_config 例として substring_of_filename。)

4
Ruler Theodore

Mac OS Xでは、mdfindを使用してエイリアスを.bashrcに配置することもできます。

# mdfind uses Spotlight 
alias findf='mdfind -onlyin . -name'

findf app_config
5
chad

これがbash関数です。.bashrcに入れてください。

function findfiles { find "$1" -iname "*$2*"; }

-inameを使用すると、検索で大文字と小文字が区別されないことに注意してください。これが不要な場合は、代わりに-nameを使用してください。)

3
Janus Troelsen

Au contraire!さらに複雑なものもありますが、機能するものは次のとおりです。

find . -name "*app_config*"

Gnu-findにはドットは必要ありません:

find -name "*app_config*"

ただし、アスタリスクをマスクする必要があります。そうしないと、シェルによって解釈され、「app_config」に一致する現在のディレクトリ内のファイル名に一致するファイル名のみが見つかります。

2
user unknown

これを~/.profileまたは~/.bashrcのいずれかに入れて、どちらのMacを使用しているかわからない:

findname () 
{ 
    find . -name "*$1*"
}

次に、findname name_of_fileで関数を呼び出します

複数の単語を使用したい場合は、もっと複雑にする必要があります。私が手に負えないと考える最も簡単な方法は次のとおりです。

findname() 
{ 
    find .|grep $1|grep $2|grep $3|grep $4 
}

これにより、現在のディレクトリ内のすべてのファイルが検索され、文字列1が検索され、その結果で文字列2が検索され、4になるまで検索されます。

1
Matt

これをbash、zsh、tcsh、shなどのスクリプトで行う代わりに、 TextExpander ショートカットを作成しました。 sh≤Space≥とTEタイプを入力します

見つける。 -iname "**"

アスタリスクの間にカーソルを置きます。

0
Mark Thalman

Bash 4を使用する場合(shopt -s globstar)またはzsh:

prinftf %s\\n **/*substring_of_filename*
0
Lri

OS Xでは、ロケートを使用しないのはなぜですか?確かに、locatebはデフォルトではあまり頻繁に更新されませんが、簡単に変更できます(OS Xで定期的なジョブスケジュールを変更します)。 LocateはBSDismであり、Linux上にあるかどうかはわかりません。

0
tamouse

ほとんどのLinuxディストリビューションでは、locateを使用できます。例えば:

$ locate find | grep bin
/sbin/findfs
/usr/bin/find
/usr/bin/find2Perl
/usr/bin/findsmb
/usr/bin/gst-typefind-0.10
/usr/bin/memdiskfind
/usr/bin/oldfind
/usr/bin/sane-find-scanner
/usr/include/c++/4.5/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp
/usr/include/c++/4.5/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp
/usr/include/c++/4.5/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp
0
Xenoactive

答えはいいえだ"。 "現在のディレクトリ以下の部分文字列を含むファイル名でファイルを検索する" in GNU find。回避するために使用するエイリアスこの制限は次のとおりです(zshの場合)。

# find file in cwd by [S]ubstring, case [I]nsensitive, change to first sub[D]irectory
finds()   { find .  -name "*$**"; }
findsi()  { find . -iname "*$**"; }
findsid() { cd `find . -iname "*$**" | head -n1 | xargs dirname`; }

最後は私のお気に入りです。これらは次のように使用できます。

> ls -R
.:
file1  File2  HOLEFILE  test

./test:
hello

(これがテストディレクトリです)

> findsi file
./HOLEFILE
./File2
./file1

> finds file
./file1

> finds le
./File2
./file1

> findsid ell
> ls
hello
0
Alex Hirzel