디렉토리에 특정 파일 이름이 있는지 확인하는 방법은 무엇입니까? [폐쇄]

디렉토리에 특정 파일 이름이 있는지 확인하는 방법은 무엇입니까? [폐쇄]

/opt/backup/많은 파일이 포함된 경로가 있습니다. 예:

100051
100052
100053 
etc.

100051 100052 100053파일이 존재하는지 알고 싶습니다 /opt/backup/.

답변1

확인하려는 파일 이름에 대해 ls를 실행할 수 있습니다. 예를 들면 다음과 같습니다.

$ ls -ld /opt/backup/10005{1,2,3}

ls: cannot access '/opt/backup/100052': No such file or directory
ls: cannot access '/opt/backup/100053': No such file or directory
-rw-r--r-- 1 root root 0 Jul  4 09:25 /opt/backup/100051

/opt/backup/100051이 예에서는 존재하는 것과 존재 /opt/backup/100052하지 않는 것을 볼 수 있습니다 /opt/backup/100053.

  • -l선택 사항이지만 더 유용한 출력이 있다고 생각합니다.
  • -d디렉토리 내용의 출력을 방지하는 것입니다

스크립트에서 확인하려면 다음을 사용하십시오 -f.

for f in /opt/backup/10005{1,2,3}; do
  if [ -f "$f" ]; then
    echo "Exists: $f"
  else
    echo "Not Exists: $f"
  fi
done

산출:

Exists: /opt/backup/100051
Not Exists: /opt/backup/100052
Not Exists: /opt/backup/100053

답변2

그냥 그럴 때한 번 것나는 너무 많이 생각하고 싶지 않다는 것을 깨달았습니다.탭 완성특정 파일이나 디렉터리의 정확한 이름이나 존재 여부를 빠르게 확인합니다(어쨌든 대부분의 셸에서). 나는 보통 다음과 같이 ls시작합니다 cat.

ls /opt/backup/10003[TAB]

... [TAB]Tab 키를 누르기만 하면 됩니다. 가능한 완료가 하나만 있는 경우 일치하는 파일 이름이 채워집니다. 가능성이 여러 개인 경우 해당 목록이 반환됩니다. 일부 쉘에서는 [TAB]후보 목록으로 돌아가기 위해 여러 키를 눌러야 합니다 .

100030    100031    100032    100033

물론, 쉘은 기본적으로 탭 완성을 (또는 전혀) 허용하지 않을 수도 있습니다. 내 경험상 이런 경우는 매우 드뭅니다. 이전 버전의 Solaris를 특정하게 설치하려고 합니다.

반면에 동일한 파일을 계속해서 확인해야 하는 경우 여기에 있는 다른 답변이 더 좋습니다. 사용 사례는 실제로 지정되지 않았습니다.

답변3

일반적인 사용법입니다찾다주문하다:

find /opt/backup -type f -name "100051" -o -name "100052" -o -name "100053"
  • -f 유형파일만 필터링

  • -영형매개변수는 OR을 의미합니다.

  • -이름이름 템플릿을 지정할 수 있습니다.

- maxdepth또는를 사용하여 검색할 수준 수를 정의할 수도 있습니다.-mindepth

파일이 발견되면 출력은 다음과 같습니다.

/opt/backup/100051
/opt/backup/100052
/opt/backup/100053

관련 정보