주문하다:
find . ! -name '*153902*.json' -exec ls -nls {} + | sort -k 10
반품:
12 -rw-rw-r-- 1 1000 1000 8359 May 6 15:11 ./Flights20180506-151026_KSEA_300.json
12 -rw-rw-r-- 1 1000 1000 8359 May 6 15:11 Flights20180506-151026_KSEA_300.json
44 -rw-rw-r-- 1 1000 1000 40999 May 6 15:39 Flights20180506-153902_KATL_0.json
응답의 이 코드는 처음 두 줄 항목이 동일한 파일을 나타내는 것으로 나타남을 보여줍니다. 차이점은 파일 이름 앞에 "./"가 있다는 것입니다. 첫 번째 항목은 무엇을 나타냅니까? 세 번째 항목에 ./가 없는 이유는 무엇입니까?
myname@Metropolitan:~/FlightAwareXML3/Thanksgiving18$ find . ! -name '*153902*.json' -exec ls -nlst {} \; | grep 153902_KATL_0
44 -rw-rw-r-- 1 1000 1000 40999 May 6 15:39 Flights20180506-153902_KATL_0.json
질문
자세한 내용은 Google에서 알아보세요./ 구문의 고유 키워드는 무엇입니까?
./를 사용하여 첫 번째 광고 항목 응답을 제거하는 것이 가능합니까?
답변1
프로세스는 다음과 같습니다.
find . ! -name '*153902*.json'
다음을 반환합니다:
.
./Flights20180506-151026_KSEA_300.json
그런 다음 exec
다음을 실행합니다.
ls -nls . ./Flights20180506-151026_KSEA_300.json
그러면 다음과 같은 내용이 제공됩니다 .
.
12 -rw-rw-r-- 1 1000 1000 8359 May 6 15:11 Flights20180506-151026_KSEA_300.json
44 -rw-rw-r-- 1 1000 1000 40999 May 6 15:39 Flights20180506-153902_KATL_0.json
그리고 ./Flights20180506-151026_KSEA_300.json
그 자체.
출력에 표시되는 내용은 기준과 일치하는 파일 이름과 경로를 ./
연결한 결과 입니다. .
이 동작은 다음에 설명되어 있습니다.POSIX 조회 문서:
각 경로 피연산자는 모든 후행 문자를 포함하여 있는 그대로 평가됩니다. 계층 구조에서 발견되는 다른 파일에 대한 모든 경로 이름은 현재 경로 피연산자가 1로 끝나지 않고 경로 피연산자를 기준으로 한 파일 이름
답변2
를 사용하여 일반 파일을 찾을 때 find
다음을 사용하십시오 -type f
.
find . -type f ! -name '*153902*.json'
이렇게 하면 특히 .
이 경우 디렉터리 이름 일치를 피할 수 있습니다.