Linux-znajdowanie plików z nazwą zawierającą ciąg znaków

Szukałem polecenia, które zwróci pliki z bieżącego katalogu, które zawierają łańcuch znaków w nazwie pliku. Widziałem komendy locate i find, które mogą znaleźć pliki zaczynające się na coś first_word* lub kończące się na coś *.jpg.

Jak Mogę zwrócić listę plików, które zawierają łańcuch znaków w nazwie pliku?

Na przykład, jeśli 2012-06-04-touch-multiple-files-in-linux.markdown był plikiem w bieżącym katalogu.

Jak Mogę zwrócić ten plik i inne zawierające łańcuch touch? Za pomocą polecenie takie jak find '/touch/'

Author: Dru, 2012-07-04

6 answers

Użycie find:

find . -maxdepth 1 -name "*string*" -print

Znajdzie wszystkie pliki w bieżącym katalogu (usuń maxdepth 1 jeśli chcesz, aby był rekurencyjny) zawierające "string" i wydrukuje go na ekranie.

Jeśli chcesz uniknąć pliku zawierającego ':', możesz wpisać:

find . -maxdepth 1 -name "*string*" ! -name "*:*" -print

Jeśli chcesz użyć grep (ale myślę, że nie jest to konieczne, o ile nie chcesz sprawdzać zawartości pliku) możesz użyć:

ls | grep touch

Ale powtarzam, find jest lepszym i czystszym rozwiązaniem dla Twojego zadanie.

 186
Author: Zagorax,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-06 14:33:25

Użyj grep w następujący sposób:

grep -R "touch" .

-R oznacza rekurencję. Jeśli wolisz nie wchodzić do podkatalogów, pomiń je.

-i oznacza "ignoruj przypadek". Warto też spróbować.

 12
Author: carlspring,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-04 12:20:50

Opcja -maxdepth powinna być poprzedzona opcją -name, Jak Poniżej.,

find . -maxdepth 1 -name "string" -print
 2
Author: Sunil Dias,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-15 15:02:30
find $HOME -name "hello.c" -print

PrzeszukaÄ ‡ caĹ ' y system $HOME (tj. /home/username/) w poszukiwaniu plikĂłw o nazwie "hello.c " i wyświetla ich nazwy ścieżek:

/Users/user/Downloads/hello.c
/Users/user/hello.c

Jednak nie będzie pasował HELLO.C lub HellO.C. Aby dopasować wielkość liter, podaj opcję -iname w następujący sposób:

find $HOME -iname "hello.c" -print

Przykładowe wyjścia:

/Users/user/Downloads/hello.c
/Users/user/Downloads/Y/Hello.C
/Users/user/Downloads/Z/HELLO.c
/Users/user/hello.c

Podaj opcję -type f, aby wyszukiwać tylko pliki:

find /dir/to/search -type f -iname "fooBar.conf.sample" -print
find $HOME -type f -iname "fooBar.conf.sample" -print

-iname Działa na GNU lub BSD (włączając w to OS X) polecenie Znajdź wersję. Jeśli Twoja wersja polecenia find nie obsługuje -iname, wypróbuj następującą składnię używając polecenia grep:

find $HOME | grep -i "hello.c"
find $HOME -name "*" -print | grep -i "hello.c"

Lub spróbuj

find $HOME -name '[hH][eE][lL][lL][oO].[cC]' -print

Przykładowe wyjścia:

/Users/user/Downloads/Z/HELLO.C
/Users/user/Downloads/Z/HEllO.c
/Users/user/Downloads/hello.c
/Users/user/hello.c
 2
Author: shilovk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-10 14:17:40

Jeśli łańcuch jest na początku nazwy, możesz to zrobić

$ compgen -f .bash
.bashrc
.bash_profile
.bash_prompt
 0
Author: Steven Penny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-18 06:16:44
grep -R "somestring" | cut -d ":" -f 1
 0
Author: Saurabh kukade,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-18 08:48:46