다른 Android 프로젝트의 이미지 파일을 현재 프로젝트로 복사할 때 몇 가지 불편함을 겪고 있습니다.
nice_little_icon.png
Project1 디렉토리 아래의 각 디렉토리 drawable-ldpi
, , 및 drawable-mdpi
파일을 호출 한다고 가정합니다 .drawable-hdpi
drawable-xhdpi
drawable-xxhdpi
res
res
이제 단일 Linux/Unix 명령을 사용하여 이 파일을 project2의 디렉터리에 어떻게 복사할 수 있습니까 ?
그래서 내 최종 결과는 다음과 같습니다
Project1/../res/drawable-ldpi/nice_little_icon.png -> Project2/../res/drawable-ldpi/nice_little_icon.png
Project1/../res/drawable-mdpi/nice_little_icon.png -> Project2/../res/drawable-mdpi/nice_little_icon.png
Project1/../res/drawable-hdpi/nice_little_icon.png -> Project2/../res/drawable-mdpi/nice_little_icon.png
Project1/../res/drawable-xhdpi/nice_little_icon.png -> Project2/../res/drawable-xhdpi/nice_little_icon.png
Project1/../res/drawable-xxhdpi/nice_little_icon.png -> Project2/../res/drawable-xxhdpi/nice_little_icon.png
답변1
당신은 그것을 사용할 수 있습니다 rsync
.
rsync -avzh -n --include='*/' --include='*nice_little_icon.png' --exclude='*' Project1/../res/ Project2/../res/
이것은 호출된 파일 만 nice_little_icon.png
에서 으로 복사하며 , 파일의 상위 디렉터리( , 등)가 없으면 그 아래에 생성됩니다 .Project1/../res/*
Project2/../res/
drawable-ldpi
drawable-ldpi
Project2/../res/
rsync
명령을 설명하십시오 .
-avzh
:-a
기본적으로 "타임스탬프, 권한 및 기타 몇 가지 사항을 반복하고 보존합니다"를 의미-v
하고 장황함을 의미하며-z
전송 시 파일을 압축한다는 의미(실제로는 필요하지 않지만 어쨌든 사용하고 싶습니다)-h
는 사람이 읽을 수 있는 읽기 모드에서 인쇄를 의미합니다. .-n
: 시운전을 나타냅니다. 따라서 이 명령을 실행해도 아무 일도 일어나지 않습니다. 실제로 명령이 실행되도록 하려면 이를 제거해야 합니다.--include='*/' --include='*nice_little_icon.png' --exclude='*'
rsync
: 기본적으로 다음으로 끝나는 파일만 복사하고nice_little_icon.png
나머지는 모두 제외하라는 의미입니다.Project1/../res/
: 소스 디렉토리./
마지막으로매우중요한 것은 "무엇이든 복사하다"는 뜻입니다.아래에res/
'. 디렉토리를 삭제하면/
실제 디렉토리가 대상에 복사되는데res
이는 원하는 것이 아닙니다.Project2/../res/
: 대상 디렉토리.
위 명령을 실행하면 수행할 작업(즉, 복사할 디렉터리와 파일)이 표시됩니다.
./ 드로어블-hdpi/ drawable-hdpi/nice_little_icon.png 드로어블-mdpi/ drawable-mdpi/nice_little_icon.png ...
이는 다음과 같아야 합니다(즉, 상위 디렉토리, 파일만 nice_little_icon.png
). 좋아 보인다면-n
실제로 작업을 수행하고 파일을 복사하도록 명령에서 제거하십시오..
답변2
당신은 그것을 사용할 수 있습니다pax
tar
명령( 및 에 대한 표준화된 대체 cpio
) 이 명령은 모든 POSIX 호환 시스템에 있지만 일부 Linux 배포판에서는 기본 설치에서 이 명령이 생략되어 있습니다. pax
대상 디렉터리 아래의 모든 경로를 복사합니다.
pax -rw -pe drawable-*/nice_little_icon.png ../../Project2/res/
-s
이 옵션을 사용하면 셸에서 와일드카드를 사용하는 대신 특정 파일을 무시할 수 있습니다.
pax -rw -pe -'s!^drawable-[^/]*/nice_little_icon\.png$!&!' -'s!.*/.*!!' drawable-* ../../Project2/res/