유닉스 find 명령 도움말

유닉스 find 명령 도움말

안녕하세요. 누구든지 다음 줄을 도와줄 수 있나요?

find . \( -type d ! -name . -prune \) -o -type f -name "*Log*"

기본적으로 이름에 "Log"가 포함된 파일이 있는 디렉터리를 찾아야 합니다.

나는 다음과 같은 구조를 가지고 있습니다 :

/logs
  |
  |
  ----folder1
  |       |
  |       |
  |       ---App1LogDate.txt
  |
  ----folder2
  |      |
  |      |
  |      ---App2LogDate.txt
  |
  |
  |--App3LogDate.txt
  |
  |--App4LogDate.txt

따라서 /logs 디렉토리 내에서 이 줄을 실행하면 다음과 같은 결과를 얻을 수 있습니다.

.
./folder1
./folder2

총 3개의 디렉토리.

답변1

약간 좌익적이지만 위의 설명을 바탕으로 다음은 원하는 작업을 정확하게 수행해야 합니다.

find . -type f -name "*Log*" -print | sed -E 's/\/[^\/]+$//' | sort | uniq

답변2

find . -name *.Log -print 

그러면 이름이 Log 로 끝나는 모든 파일의 전체 경로가 제공됩니다.

답변3

찾다 . ( -type d ! -name . -prune ) -o -type d -name "통나무"

tmp$ ls
App3LogDate.txt  App4LogDate.txt  folder1  folder2
tmp$ ls folder*
folder1:
App1LogDate.txt

folder2:
App2LogDate.txt
tmp$ find . \( -type d ! -name . -prune \) -o -type d -name "*Log*"
./folder2
./folder1
tmp$

답변4

GNU find가 있는 경우(Linux 및 기타 많은 최신 Unix와 마찬가지로) 멋진 printf 연산자를 사용하여 다음을 수행할 수 있습니다.

find -type f -name '*Log*' -printf '%h\n'

sort -u또한 a (또는 sort | uniq적절하다면 )를 통해 파이프하고 싶을 수도 있습니다 . 일부 상용 UNIX 구현에는 gfind로 설치됩니다(또는 이를 설치하는 패키지가 있습니다).

관련 정보