중복 출력에서 ​​Exec 결과를 찾으시겠습니까?

중복 출력에서 ​​Exec 결과를 찾으시겠습니까?

ls의 출력이 두 번 인쇄되는 원인은 무엇입니까?

$find . -exec ls -l {} \;
total 340
-rw-rw-r-- 1 w w 163244 Aug 26 19:25 apt-list--installed.txt
-rw-rw-r-- 1 w w 162078 Aug 26 19:25 apt-list.txt
-rw-rw-r-- 1 w w     29 Aug 27 08:29 df1
-rw-rw-r-- 1 w w     31 Aug 27 08:22 df2
-rw-rw-r-- 1 w w      9 Aug 26 23:24 f1
-rw-rw-r-- 1 w w      5 Aug 26 23:21 f2
-rw-rw-r-- 1 w w     27 Aug 27 11:40 o.txt
-rw-rw-r-- 1 w w 9 Aug 26 23:24 ./f1
-rw-rw-r-- 1 w w 163244 Aug 26 19:25 ./apt-list--installed.txt
-rw-rw-r-- 1 w w 27 Aug 27 11:40 ./o.txt
-rw-rw-r-- 1 w w 5 Aug 26 23:21 ./f2
-rw-rw-r-- 1 w w 162078 Aug 26 19:25 ./apt-list.txt
-rw-rw-r-- 1 w w 29 Aug 27 08:29 ./df1
-rw-rw-r-- 1 w w 31 Aug 27 08:22 ./df2

보시다시피, 이러한 파일은 위 출력에 두 번 나열됩니다. 왜?

답변1

find이는 찾은 모든 파일과 디렉터리에서 실행하고 디렉터리에서 실행하면 기본적으로 해당 내용을 나열하기 때문에 발생합니다 . 따라서 각 파일은 처리되는 대로 나열됩니다.lslsfind그리고포함된 디렉터리를 처리할 때.

이를 방지하려면 ls모든 것을 파일로 처리하도록 지시하거나( ls -ld), 파일이 있는 경우 find'와 유사한 출력( )을 사용하도록 지시할 수 있습니다. 두 가지 모두 파일과 동일한 방식으로 디렉터리가 별도로 나열되도록 합니다. 파일 형식을 필터링하여 이를 방지할 수 있습니다.lsfind . -ls예를 들어 -type f).

관련 정보