찾을 수 없는 파일 찾기

찾을 수 없는 파일 찾기

나는 평생 동안 내가 여기서 잘못되고 있는 부분과 왜 내 grep이 파일을 출력하지 않는지 알아낼 수 없습니다.

실제로 내가 원하는 것은 이 정규식과 일치하는 모든 파일을 캡처하는 것이며 "\(multidoge\|wallet\)[.]\(dat\|wallet\)"나중에 이전 파일 시스템에서 찾아야 하는 다른 지갑에 대해 더 많은 OR을 추가할 것입니다.

ls -l --quote-name /
lrwxrwxrwx   1 root root           7 Dec 30 21:52 "bin" -> "usr/bin"
drwxr-xr-x   4 root root        4096 Feb 13 00:30 "boot"
drwxr-xr-x   2 root root        4096 Dec 30 21:53 "cdrom"
drwxr-xr-x  21 root root        5520 Mar 15 00:34 "dev"
drwxr-xr-x 165 root root       12288 Mar 12 16:13 "etc"
drwxr-xr-x   3 root root        4096 Jan  4 16:07 "home"
lrwxrwxrwx   1 root root           7 Dec 30 21:52 "lib" -> "usr/lib"
lrwxrwxrwx   1 root root           9 Dec 30 21:52 "lib32" -> "usr/lib32"
lrwxrwxrwx   1 root root           9 Dec 30 21:52 "lib64" -> "usr/lib64"
lrwxrwxrwx   1 root root          10 Dec 30 21:52 "libx32" -> "usr/libx32"
drwx------   2 root root       16384 Dec 30 21:52 "lost+found"
drwxr-xr-x   3 root root        4096 Dec 30 21:57 "media"
drwxr-xr-x   7 root root        4096 Dec 31 16:53 "mnt"
-rw-r--r--   1 root root           0 Mar 14 23:15 "multidoge.wallet"
drwxr-xr-x   8 root root        4096 Mar  5 17:00 "opt"
dr-xr-xr-x 604 root root           0 Mar 12 14:18 "proc"
drwx------  12 root root        4096 Mar 14 20:32 "root"
drwxr-xr-x  42 root root        1440 Mar 13 09:58 "run"
lrwxrwxrwx   1 root root           8 Dec 30 21:52 "sbin" -> "usr/sbin"
drwxr-xr-x   6 root root        4096 Jan 13 10:21 "snap"
drwxr-xr-x   2 root root        4096 Dec 13 12:23 "srv"
-rw-------   1 root root 15032385536 Jan  4 15:24 "swapfile"
dr-xr-xr-x  13 root root           0 Mar 12 14:18 "sys"
drwxrwxrwt  34 root root       24576 Mar 15 00:40 "tmp"
-rw-r--r--   1 root root           8 Dec 31 10:29 "tmpjcef-p79454_scheme.tmp"
drwxr-xr-x  14 root root        4096 Dec 13 12:23 "usr"
drwxr-xr-x  13 root root        4096 Jan 13 10:18 "var"
-rw-r--r--   1 root root           0 Mar 14 23:15 "wallet.dat"

hutber@hutber:/$ sudo find / -print | grep -i "multidoge.wallet"

hutber@hutber:/$ sudo find / -print | grep -i "wallet.dat"
/wallet.dat

편집하다

find반환 파일은 없지만 grep-maxlength 1을 사용하는 경우에만:

hutber@hutber:/$ sudo find / -name "*wallet*"
/wallet.dat
/media/hutber/E036A40336A3D934/cygwin64/bin/kwallet-query.exe
/media/hutber/E036A40336A3D934/cygwin64/bin/cygkwalletbackend-1.dll
/media/hutber/E036A40336A3D934/cygwin64/bin/cygkwalletbackend5-5.dll
/media/hutber/E036A40336A3D934/cygwin64/bin/cygkwalletclient-1.dll
^C
hutber@hutber:/$ find / -maxdepth 1 -name "*wallet*"
/wallet.dat
/multidoge.wallet

답변1

댓글부터 질문까지find, 사용자가 조바심이 나서 잠시 후 명령을 중단한 것 같습니다 .

그들은 와 함께 사용하면 find원하는 결과를 얻을 수 있다는 것을 알았습니다 -maxdepth 1. 이는 놀라운 일이 아니었습니다.철저히/최상위 검색 경로로 사용될 때 검색 트리의 크기를 줄입니다.

따라서 약간의 인내심을 더하거나 검색 경로를 선택하고 하위 트리를 선택하는 데 좀 더 선택적으로 접근하면 명령에서 출력을 얻지 못하는 문제를 해결할 수 있습니다 /.

두 번째 문제는 파일 이름을 특정 정규식과 일치시키는 것입니다.

\(multidoge\|wallet\)[.]\(dat\|wallet\)

이것을 파일의 전체 경로와 일치하는 POSIX 확장 정규식으로 다시 작성하면 다음과 같은 결과를 얻습니다.

.*/(multidoge|wallet)\.(dat|wallet)

find다음과 같이 GNU에 연결할 수 있습니다 .

find / -regextype posix-extended -regex '.*/(multidoge|wallet)\.(dat|wallet)'

관련 정보