Linux에서 dir1
한 디렉터리( )에서 다른 디렉터리( )로 대부분의(전부는 아님) 파일을 선택적으로 복사하는 방법은 무엇입니까 ?dir2
*.c
파일을 *.txt
에 복사 하고 싶지 않습니다 dir2
.
온라인 매뉴얼 페이지는 cp
나에게 도움이 될 수 없습니다.
답변1
find
eboix의 명령(공백으로 인해 중단되므로 마지막에 한두 가지 더 안전한 방법을 추가하겠습니다) 외에도 다음을 bash
사용할 수 있습니다 extglob
.
# turn extglob on
shopt -s extglob
# move everything but the files matching the pattern
mv dir1/!(*.c) -t dir2
# If you want to exclude more patterns, add a pipe between them:
mv dir1/!(*.c|*.txt) -t dir2
bash
extglob으로 수행할 수 있는 작업에 대한 자세한 내용은 매뉴얼 페이지를 참조하세요. 이는 재귀적이지 않으므로 dir1
하위 디렉터리가 아닌 파일만 직접 이동됩니다. 이 find
방법은 재귀적입니다.
더 안전한 find
명령:
find dir1 ! -name '*.c' -print0 | xargs -0 mv -t dir2
find dir1 ! -name '*.c' -exec mv -t dir2 {} +
더 많은 패턴을 보려면 더 많은 ! -name
문을 추가하세요.
find dir1 ! -name '*.c' ! -name '*.txt' -print0 | xargs -0 mv -t dir2
find dir1 ! -name '*.c' ! -name '*.txt' -exec mv -t dir2 {} +
답변2
이 시도:
find ./ ! -name '*.c' | xargs -i cp {} dest_dir
답변3
dir1에서 다음 명령을 사용할 수 있습니다.
CP ls|egrep -v .txt\|.c
디렉토리 2
" ls|egrep -v .txt\|.c " 섹션에는 이름에 .c 및 .txt가 없는 파일이 나열됩니다. cp는 이를 dir2에 복사합니다.