2016-09-14 7 views
0

GJ1, GJ2 등과 같은 여러 개의 상위 폴더가 있습니다. 각 폴더에는 GJ11_F.jpg, GJ11_P.jpg와 같은 세 개의 이미지가 있습니다. GJ11_F.jpg 개의 파일을 각각 부모 디렉토리 만 표시해야합니다.부모 디렉토리에서 하위 디렉토리에있는 파일을 찾고 복사하는 방법

find . -type f -name "*_F.jpg" | xargs cp -t ~/home/ubuntu/ 

하지만 위의 명령은 * _F.jpg 파일이 아니라 각각의 부모 디렉토리 GJ, 복사합니다.

xargs는 시도해야 할 대상이 아닙니까?

나는 또한 시도 -

find . -name "*_F.jpg" -exec sh -c 'rsync -a "${0%/*}" ~/home/ubuntu/' {} \; 

답변

0

쉬운 방법 중 하나는 자동으로 디렉토리를 처리합니다 tar 사용 :

:

find . -type f -name "*_F.jpg" -print0 | tar c --null -T - | tar xC ~/home/ubuntu/ 

그리고 여기에는 while 루프와 해결책

find . -type f -name "*_F.jpg" -print0 | 
    while IFS= read -r -d '' file; do 
     mkdir -p ~/home/ubuntu/"$(dirname -- "$file")" 
     cp -ai -- "$file" ~/home/ubuntu/"$file" 
    done 
+0

고마워요! 스크립트가 잘 작동하지만 find 명령어는 tar로 파이프되지 않습니다. – user1691915