파일 검색할 때 ls , find에 관한 질문입니다.

cococo의 이미지

전에 몰랐었는데,

$find / -name "io.c" 와

$ls /* * | grep io.c

가 결과값이 다르더라구요. 왤까요?

아니면 제가 잘못 생각하고 있던 걸까요?
" ls /* * | grep io.c " 하면, / 아래의 모든 파일을 찾는 거 아닌가요?
그 출력 결과에서 io.c만 걸러내니까, find랑 결과가 같을 거라고 생각했는데... -_-;;

누구 아시는 분... .-_-;;

ganadist의 이미지

find 로 내린 명령은 io.c 라는 파일을 찾는 것이고요

ls로 내린명령은 뭔가 좀 잘못되었다는 생각이 들긴 하지만 아마도 파일 이름에 io.c가 포함된 파일을 찾는 것입니다.

즉 find에서는 파일 이름이 딱 io.c인것만 찾고, ls |grep에서는 aio.com 같은것도 포함되게 됩니다.

----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러

익명 사용자의 이미지

mkdir ~/testbed/
cd ~/testbed/

touch 1 2
mkdir a b
cd a
mkdir c d
touch 3
cd ../b
mkdir e f
touch 4
cd ../a/c/
touch 5 6
cd ../../
find .
ls *

ls *을 했을 때 5 6이 안보이는 이유를 아시면 될 것 같습니다. a, b, c등으로 이동하셔서 echo *도 해보세요. ls ~/testbed/a/, ls ~/testbed/1도 해보시면 좋습니다.