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
'UFO ET IT' 카테고리의 다른 글
MongoDB stats () 함수는 비트 또는 바이트를 반환합니까? (0) | 2020.12.06 |
---|---|
JOptionPane.showInputDialog의 다중 입력 (0) | 2020.12.06 |
UICollectionView 효과적인 드래그 앤 드롭 (0) | 2020.12.06 |
MySQL에서 주어진 하위 문자열의 마지막 색인 (0) | 2020.12.06 |
Web.config에서 system.net/mailSettings/smtp를 읽는 방법 (0) | 2020.12.06 |