prosource

BASH는 1개를 제외한 모든 파일을 복사합니다.

probook 2023. 4. 18. 23:06
반응형

BASH는 1개를 제외한 모든 파일을 복사합니다.

Default.png라는 이름의 파일을 제외한 모든 파일을 dir에서 복사하고 싶습니다.여기에는 여러 가지 방법이 있는 것 같습니다.어떤 것이 가장 효과적일 것 같습니까?

다음과 같습니다.

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

심플한 경우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 `ls | grep -v Default.png` destdir

난 그냥 할 거야:

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

큰 파일이 아니라면요그렇지 않으면 예를 들어 다음과 같이 사용합니다.

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

2022년 1월 갱신:

이것이 가장 쉬운 방법이다.

먼저 "temp" 폴더를 만듭니다.

mkdir temp

다음으로 원래 폴더에서 "temp" 폴더로 모든 파일을 복사합니다.

"-R" 플래그는 "심볼릭 링크"를 포함한 모든 파일을 복사할 수 있습니다.

cp -R originalFolder/. temp/

셋째, "temp" 폴더에서 "Default.png"를 제거합니다.

rm temp/Default.png

마지막으로 "temp" 폴더에서 대상 폴더로 모든 파일을 복사합니다.

cp -R temp/. destinationFolder/

또한 이것이 "temp" 폴더를 사용하지 않는 가장 빠른 방법입니다.

cp -R originalFolder/!(Default.png) destinationFolder/

아래 대본은 나에게 효과가 있었다.

cp -r `ls -A | grep -v 'skip folder/file name'` destination
# chattr +i /files_to_exclude
# cp source destination
# chattr -i /files_to_exclude

셸의 확장 매개 변수를 regex와 함께 사용

cp /<path>/[^not_to_copy_file]* .

not_to_copy_file을 제외한 모든 파일이 복사됩니다.

--이것에 뭔가 문제가 있는 경우.지정해주세요!

언급URL : https://stackoverflow.com/questions/1313590/bash-copy-all-files-except-one

반응형