다른 디렉터리에 있는 다른 이름을 가진 여러 파일을 동일한 새 디렉터리에 복사하려고 합니다. 디렉터리 이름은 각 파일 이름의 시작 부분과 동일합니다. 예를 들어 디렉토리에서 파일을 디렉토리로 /mnt/data/files/xyz
복사하고 싶습니다 . 디렉토리에서 파일을 디렉토리로 복사하고 싶습니다 .xyz_5
/mnt/data/myname/new
/mnt/data/files/abc
abc_7
/mnt/data/myname/new
이 작업을 수행하는 데 필요한 파일이 60개 있습니다. 이제 어떻게 해야 합니까?
cd /mnt/data/files/xyz;
cp -v *_5 /mnt/data/myname/new
모든 파일에 대해 이 작업을 수행합니다. 하지만 코드로 이 작업을 수행할 수 있나요?
답변1
질문은 그다지 명확하지 않지만 어쩌면 당신이하고 싶을 수도 있습니다
cp -v /mnt/data/files/xyz/*_5 /mnt/data/files/abc/*_7 /mnt/data/myname/new/
답변2
간단한 for 루프가 작업을 수행합니다.
for i in /mnt/data/files/*; do
[ -d "$i" ] && cp -v "${i}/${i}_5" /mnt/data/myname/new/
done
for 루프는 디렉토리의 내용을 반복합니다 /mnt/data/files/
. 루프 내부에서 [ -d "$i" ]
항목이 디렉토리인지 확인하십시오. 그렇다면 이름이 같고 _5
디렉토리에서 끝나는 파일을 대상 디렉토리에 복사하십시오 /mnt/data/myname/new/
.