디렉토리가 있습니다ㅏ그리고두번째. 각각은 다른 디렉토리를 포함합니다프로젝트.json안에. 오직프로젝트.json파일은 디렉터리에 유지되므로 디렉터리를 복사하여 붙여넣을 수 없습니다.
ㅏ:
./path/Item A/item.json
./path/Item B/item.json
...
./path/Item Z/item.json
두번째:
./new/Item A/item.json
./new/Item B/item.json
...
./new/Item Z/item.json
./path/
모든 item.json 파일을 의 적절한 폴더 에 어떻게 복사해야 합니까 ./new
?
내 솔루션:
디렉터리 가져오기
ls -l ./path | grep "^d" | cut -d' ' -f 16
그런 다음 결과를 다음과 같이 사용할 수 있습니다.
for i in `ls -l ./path | grep "^d" | cut -d' ' -f 16`; echo "Dir: $i"; done
그래서 내가 cp
그들과 함께 할 수 있도록
for i in `ls -l ./path | grep "^d" | cut -d' ' -f 16`; cp "$i/item.json" "../new/$i/item.json" ; done
이 솔루션은 괜찮지만 더 우아한 방법이 있다고 확신합니다.
답변1
다음 줄이 도움이 될 것입니다.
$ find ./path/ -type f -exec bash -c 'cp $0 ${0/path/new}' {} \;
여기서 명령은 디렉터리의 모든 텍스트 파일을 find
검색합니다 . ./path/
파일이 발견되면 /new/
단순히 문자열을 to로 바꾸는 작은 bash 스크립트를 호출하여 path
파일을 대상 디렉토리에 복사합니다 new
.
답변2
귀하의 솔루션은 훌륭합니다! 다른 옵션을 보고 싶다면 여기 제 조언이 있습니다 cp
!
나는 당신이 "item.json" 파일만 복사하고 다른 것은 복사하지 않기를 원한다고 가정합니다.
cd path; cp --parents */item.json ../new
답변3
cpio
(또는 tar
, 그러나 IMHO는 속도가 느리고 cpio와 같은 옵션이 없습니다 )를 사용하십시오 -p
! 권한, 날짜 등(필요한 경우)과 물론 디렉터리 구조도 유지합니다.
즉:cd path ; find . | cpio -pvmd ../new