find 명령을 사용하여 디렉토리의 모든 파일을 검색하고 싶습니다.
find . * -exec ll {} \;
결과에는 파일당 4개의(!) 결과가 표시됩니다.
file123
./test/file123
file123
test/file123
두 번째 결과만 표시하기 위해 find-out-of-the-box-command를 사용할 수 있습니까 ./test/file123
(따라서 그런 것을 사용하지 않음 | grep '^\./'
)?
저는 최신 버전의 HP/UX를 사용하고 있습니다.
답변1
find . * -exec ll {} \;
하위 디렉토리를 포함하여 .
현재 디렉토리에 있는 숨김되지 않은 파일(셸에 의해 확장됨) 목록과 함께 전달됨 (이러한 파일 중 하나가 또는 로 시작하거나 이름이 또는 인 파일이 있는 경우 ... 이로 인해 구문이 발생함 ) 오류가 보고됩니다).*
test
-
!
(
)
find
따라서 에서 find
파일을 재귀적으로 찾도록 지시하는 것입니다 . 따라서 파일은 두 번, 두 번 발견될 것입니다 ..
test
find
test
test/file123
ll
ls -l
나는 이것이 파일 세부 사항이나 디렉토리 유형 파일을 나열하고 해당 디렉토리에 있는 모든 파일의 세부 사항을 나열하는 도구인 스크립트라고 생각합니다 (해당 -d
옵션을 전달하지 않는 한).
so는 및 인수로 ll
호출되며 , 이 경우 if는 해당 내용에 파일의 세부 정보(포함)를 나열합니다 ../test
test
test/file
./test/file123
및 으로 호출 됩니다 test/file123
.
원하는 곳은 다음과 같습니다.
find . -exec ls -ld {} +
(사용이란 +
여러 파일이 더 효율적인 인수로 전달되고 ls
파일 목록도 ls
정렬될 수 있음을 의미합니다.)
비트리스트로 표현된 조건자를 find
지원할 수도 있습니다 .-ls
ls -lsid
find . -ls
답변2
find
현재 디렉터리( .
)와 *
그 디렉터리로 확장되는 모든 항목을 검색 하도록 요청하므로 4줄의 출력이 표시됩니다 .
현재 디렉터리의 경우 현재 디렉터리, 디렉터리 및 디렉터리의 파일이 되는 검색 내용을 find
계속 호출합니다 . 이는 두 번 나열됩니다.ll
test
test
file123
*
그런 다음 확장된 모든 항목( 디렉터리)을 검색합니다 test
. 이제 다시 사용할 수 ll
있으며 test
그 안에 있는 파일을 사용할 수 있습니다. 파일이 다시 두 번 나열됩니다.
대신 일반 파일을 찾으려면 를 사용하세요 . 기본적으로 검색된 경로 이름이 나열되므로 결과를 얻기 위해 ( 또는 )를 -type f
사용할 필요가 없습니다 . 또한 현재 디렉터리(또는 )를 검색 경로로 사용하세요.ll
ls
find
find
test
find . -type f
정확한 이름의 파일을 찾고 있는 경우 file123
:
find . -type f -name 'file123'
ls -l
경로 이름 대신 유사한 출력을 원하는 경우 :
find . -type f -name 'file123' -ls
답변3
검색은 모든 디렉터리에서 반복적 으로 find
수행됩니다.
찾기는 파일뿐만 아니라 디렉터리도 반환합니다!
테스트 디렉터리의 모든 파일을 나열하려면 다음 명령만 있으면 됩니다.
find test/ -type f
또한, 나는 당신이 무엇을 달성하려고 하는지 모르지만 find
맨페이지를 확인하고 있습니다 -exec ll {} \;
. find
)