[bash] BASH는 하나를 제외한 모든 파일을 복사합니다.

Default.png라는 이름을 제외하고 모든 파일을 디렉토리에서 복사하고 싶습니다. 이를 수행하는 방법에는 여러 가지가있는 것 같습니다. 당신에게 가장 효과적인 것은 무엇입니까?



답변

src/파일 만 포함하는 경우 간단 합니다.

find src/ ! -name Default.png -exec cp -t dest/ {} +

경우 src/하위 디렉토리,이 생략합니다을 가지고 있지만, 그 내부에 파일 복사 작업을 수행합니다

find src/ -type f ! -name Default.png -exec cp -t dest/ {} +

src/하위 디렉터리가있는 경우 해당 디렉터리로 반복되지 않습니다.

find src/ -type f -maxdepth 1 ! -name Default.png -exec cp -t dest/ {} +


답변

다음과 같아야합니다.

cp -r !(Default.png) /dest

현재 폴더에 중첩 된 폴더로 복사하는 경우 (아래의 경우 예라고 함) 해당 디렉토리도 생략해야합니다.

cp -r !(Default.png|example) /example


답변

rsync는 오랫동안 내 cp / scp 대체품이었습니다.

rsync -av from/ to/ --exclude=Default.png

-a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)
-v, --verbose               increase verbosity


답변

난 그냥 할거야 :

cp srcdir/* destdir/ ; rm destdir/Default.png

파일이 크지 않는 한. 그렇지 않으면 사용 예

find srcdir -type f/ |grep -v Default.png$ |xargs -ILIST cp LIST destdir/


답변

이것은 노드 모듈을 제외한 모든 것을 복사하는 데 효과적입니다. 🙂 즐기며 위의 답변 덕분에 방금 추가했습니다. Rsync는 요청하지 않고 진행률 표시 줄을 볼 수 있으므로 CP보다 제 생각에 더 좋습니다.

   rsync -av fromDirectory/ ToDirectory/ --exclude=node_modules


답변

cp `ls | grep -v Default.png` destdir


답변

# chattr +i /files_to_exclude
# cp source destination
# chattr -i /files_to_exclude