programing

Linux 명령 줄에있는 파일 / 디렉토리를 어떻게 찾을 수 있습니까?

procenter 2021. 1. 14. 23:22
반응형

Linux 명령 줄에있는 파일 / 디렉토리를 어떻게 찾을 수 있습니까?


이상적으로는 다음과 같은 프로그램을 사용할 수 있습니다.

find [file or directory name]

파일 이름 / 디렉토리가 일치하는 경로를보고합니다. 불행히도 이것은 전체 폴더가 아닌 현재 디렉토리 만 확인하는 것 같습니다.

나는 또한 찾기를 시도했지만 컴퓨터 어딘가에 있음에도 불구하고 파일을 찾지 못했습니다.


"안타깝게도 전체 폴더가 아닌 현재 디렉토리 만 확인하는 것 같습니다." 아마도 당신은 그것이 하위 디렉토리에서 보이지 않는다는 것을 의미합니다. 이 문제를 해결하려면find -name "filename"

문제의 파일이 현재 작업 디렉토리에 없으면 다음을 통해 전체 시스템을 검색 할 수 있습니다.

find / -name "filename"

이것은 find / -name "*.pdf", 등과 같은 것들에서도 작동합니다 . 때때로 나는 그것을 grep 문으로 파이프하는 것을 좋아합니다 (적어도 내 컴퓨터에서는 결과가 강조 표시되기 때문에) 그래서 나는 다음과 같은 결과를 얻습니다.

find / -name "*star*wars*" | grep star

이 방법이나 비슷한 방법을 사용하면 파일 이름을 즉시 찾고 내가 찾고있는 파일인지 인식 할 수 있습니다.


일부 디렉토리에서 중첩을 찾아야하는 경우 :

find / -type f -wholename "*dirname/filename"

또는 연결된 디렉토리 :

find / -type d -wholename "*foo/bar"

find명령은 시간이 오래 걸리며 파일을 검색하는 가장 빠른 방법 locate은 색인화 된 데이터베이스 (command로 업데이트 됨)에서 파일 이름 (및 경로)을 찾는 명령을 사용 하는 것입니다 updatedb.

결과는 간단한 명령으로 즉시 나타납니다.

locate {file-name-or-path}

명령을 찾을 수없는 경우 먼저 mlocate패키지 를 설치 하고 updatedb명령을 실행 하여 검색 데이터베이스를 처음으로 준비해야합니다.

자세한 내용은 https://medium.com/@thucnc/the-fastest-way-to-find-files-by-filename-mlocate-locate-commands-55bf40b297ab


권한 오류 등을 제거하려면 stderr을 아무데도 리디렉션하지 마십시오.

find / -name "something" 2>/dev/null

아래 예는 현재 디렉토리에서 특정 폴더를 찾는 데 도움이됩니다. 이 예제는 현재 직접 검색하고 현재 디렉터리에서 사용 가능한 하위 디렉터리를 검색합니다.

#!/bin/bash

result=$(ls -d operational)

echo $result

test="operational"

if [ "$result" == "$test" ] 
then 
   echo "TRUE"
else
   echo "FALSE"
fi

찾고있는 명령 파일 인 경우 가장 빠르고 정확한 방법은

which "commandname"

시스템에 동일한 이름을 가진 파일이 많은 경우에도 명령에 사용되는 실제 파일이 표시됩니다.

참조 URL : https://stackoverflow.com/questions/24655436/how-can-i-find-a-file-directory-that-could-be-anywhere-on-linux-command-line

반응형