UFO ET IT

Unix / Linux에서 특정 파일의 재귀 사본?

ufoet 2020. 12. 6. 22:25
반응형

Unix / Linux에서 특정 파일의 재귀 사본?


*.jar디렉터리와 모든 하위 디렉터리에서 모든 파일 을 복사해야합니다 . UNIX / Linux 터미널에서 어떻게 할 수 있습니까? 명령 cp -r *.jar /destination_dir이 작동하지 않습니다.


rsync로컬 파일 복사뿐만 아니라 컴퓨터 간에도 유용합니다. 이것은 당신이 원하는 것을 할 것입니다 :

rsync -avm --include='*.jar' -f 'hide,! */' . /destination_dir

.NET의 전체 디렉토리 구조 / destination_dir에 복사되지만 .jar 파일 만 복사됩니다. -a는 파일에 대한 모든 권한과 시간이 변경되지 않도록합니다. -m은 빈 디렉토리를 생략합니다. -v는 자세한 출력을위한 것입니다.

드라이 런의 경우 -n을 추가하면 수행 할 작업을 알려 주지만 실제로는 아무것도 복사하지 않습니다.


jar 파일 만 디렉토리 구조가 필요하지 않은 경우 다음을 사용할 수 있습니다.

shopt -s globstar
cp **/*.jar destination_dir

디렉토리 구조를 원한다면 cp--parents옵션을 확인할 수 있습니다 .


찾기에 -exec 스위치가 있고 cp에 -t 옵션이있는 경우 :

find . -name "*.jar" -exec cp -t /destination_dir {} +

병렬 호출에 "+"를 제공하지 않는 경우 ";"를 사용할 수 있습니다. 하지만 다음을 생략 할 수 있습니다 -t.

find . -name "*.jar" -exec cp {} /destination_dir ";"

tar -cf - `find . -name "*.jar" -print` | ( cd /destination_dir && tar xBf - )

cp --parents `find -name \*.jar` destination/

에서 man cp:

--parents
       use full source file name under DIRECTORY

대상 아래에서 동일한 디렉토리 계층을 유지하려면 다음을 사용할 수 있습니다.

(cd SOURCE && find . -type f -name \*.jar -exec tar cf - {} +) \
  | (cd DESTINATION && tar xf -)

이렇게하면 find백틱 내 에서 출력을 확장하는 대신 여러 파일을 처리 할 수 ​​있다는 장점이 있습니다.


find . -name \*.jar | xargs cp -t /destination_dir

jar 파일 이름에 공백이없고 cp"-t"옵션이 있다고 가정합니다 . cp"-t"를 할 수 없다면

find . -name \*.jar | xargs -I FILE cp FILE /destination_dir

참고 URL : https://stackoverflow.com/questions/9622883/recursive-copy-of-specific-files-in-unix-linux

반응형