.png
이 명령이 17개 파일을 현재 디렉터리 내의 하위 디렉터리에 복사하지 않은 이유는 무엇입니까 ?
$ find . -maxdepth 1 -mtime -3 | wc -l
17
$ find . -maxdepth 1 -mtime -3 -print0 | grep -z loader | xargs -r0 cp -t ./user_name_tutorial/
$ find . -maxdepth 1 -mtime -3 -print0
../Plugins.png./Screenshot from 2015-08-06 22:30:56.png./Screenshot from 2015-08-06 22:28:21.png./Plugins_ex-in-post.png./Screenshot from 2015-08-06 22:31:14.png./Pages_visit_site.png./user_name_tutorial./Page_edit.png./Screenshot from 2015-08-06 22:28:52.png./Page_edit-visual.png./Plugins-google-maps_v2-example.png./Screenshot from 2015-08-06 22:29:27.png./Plugin_google_apps.png./Screenshot from 2015-08-06 22:30:44.png./Media_uploads.png./Plugins_add_new.pnguser_name@COMP_NAME-X:~/Pictures$
답변1
당신은 우리에게 결과를 보여주었습니다
find . -maxdepth 1 -mtime -3 -print0
의 출력은 무엇입니까
find . -maxdepth 1 -mtime -3 -print0 | grep -z loader
? loader
표시된 출력에 해당 단어가 포함된 파일 이름이 표시되지 않습니다 . 의 출력 grep
(즉, 의 입력 xargs
)에 아무것도 포함되어 있지 않으면 당연히 아무것도 복사되지 않습니다.
반품,
find … | grep foo
find … -name "*foo*"
대신 프로세스를 말하고 저장할 수 있습니다 .
와는 별개로:-maxdepth 1
(아시다시피) 현재 디렉토리로 검색을 제한하는 를 사용하신 것으로 확인되었습니다 . 해당 항목이 없으면find
하위 디렉터리를 찾아서find … | grep foo
다음을 제공합니다.모두food_fight
다음에 관계없이 이름이 , 또는 인 하위 디렉토리football
의 파일pound_foolish
기록한 것이름, 이후grep
전체(.
-relative) 파일 이름뿐만 아니라 경로 이름입니다.-maxdepth 1
find
현재 디렉토리 내의 하위 디렉토리 이름 보고를 방지하지 않습니다 . 따라서 이름이loader
( 또는 )인other_loader_files
하위 디렉토리가 있는 경우그것의 이름에 전달됩니다cp
. 이는 귀하가 말하지 않았기 때문에 오류 메시지를 표시할 뿐입니다cp -r
. 그러나 방심하여 불쾌한 일을 할 수 있는 유사한 상황이 있을 수 있습니다.- 라고 말함으로써 위의 (잠재적인) 문제를 피할 수 있습니다
-type f
. -mtime -3
(아시다시피) 수정 날짜를 기준으로 검색을 제한하는 을(를) 사용하고 계신 것으로 알고 있습니다 .-mtime -3
또는 같은 검색 제한 테스트를 사용하지 않는 경우 와일드카드(종종 "glob" 또는 파일 이름 확장 패턴이라고 함)를-type f
사용하는 것은find … -maxdepth 1
다음과 같은 와일드카드를 사용하는 것과 거의 동일합니다.cp -t ./user_name_tutorial/ *loader*
또는
cp *loader* ./user_name_tutorial/