Linux: 확장명을 기준으로 모든 파일을 단일 디렉터리에 반복적으로 복사합니다.

Linux: 확장명을 기준으로 모든 파일을 단일 디렉터리에 반복적으로 복사합니다.

*.tif./old의 모든 파일을 ./new로 복사하려고 합니다 . ./old에는 다양한 파일이 포함된 하위 디렉터리가 많이 있고, ./new에는 폴더 트리 없이 TIF 파일만 필요합니다.

그래서 나는 노력했다.

cp -vR ./old/*.TIF ./new`

하지만 오류가 발생했습니다.

No such file or directory "./old/*.TIF"

내가 뭘 잘못하고 있는 걸까요?

답변1

이를 위해 찾기를 사용하세요find . -name "*.TIF" -exec cp {} new \;

그래서 find파일을 찾는 데 사용됩니다. 이 명령은 파일 이름이 끝나는 find여기에서 시작하는 파일이 쉘 확장을 위한 큰따옴표를 기억한다는 것을 의미합니다. 따라서 모든 파일을 찾는 것은 간단합니다. .-name.tiftif

find . -name "*.tif"
./2/3/3.tif
./2/2.tif
./1.tif

-exec그런 다음 파일로 작업을 수행하는 데 사용합니다 . 이 경우 이스케이프된 세미콜론이 뒤따르는 대상 디렉터리의 cp파일을 찾았습니다.{}new\;

답변2

이렇습니다. 이전 디렉터리를 입력해야 합니다.

cd old
cp -R *.tif ../new

답변3

.tif디렉터리 에 파일이 없을 수도 있습니다 old.

또한 간단한 스크립트를 사용하여 파일 목록을 얻고 복사할 수 있습니다.

find /old -type f | xargs grep *.tif 목록을 줄 것이다.

다음을 수행할 수 있습니다.

for i in `find /old -type f | xargs grep *.tif` 
do
cp $i /new
done;

관련 정보