디렉토리에서 모든 파일 확장자를 재귀적으로 찾고 모든 확장 파일을 단일 디렉토리에 복사합니다.

디렉토리에서 모든 파일 확장자를 재귀적으로 찾고 모든 확장 파일을 단일 디렉토리에 복사합니다.

여러 확장 파일이 포함된 하위 디렉터리가 있는 디렉터리가 있습니다. 모든 ext 파일을 단일 디렉토리 "scan"에 복사하고 싶습니다. 성공하지 못한 채 다음 cmd를 실행해 보았습니다.

find . -name \*.py -o -name \*.sql -o -name \*.conf -o -name \*.csv -exec cp {} scan/ \;

해당 특정 확장자만 사용하고 마지막 확장자(예: .csv) 파일만 "스캔" 폴더에 복사합니다.

아래 명령을 실행해 보았지만 모든 확장만 제공됩니다. 파일은 다음과 같습니다:

$ find . -type f -name '*.*' | sed 's|.*\.||' | sort -u
conf
coveragerc
css
csv
eot
etlconf
gitignore
hql
html
idx
ini
js
json
log
map
md
pack
pdf
py
sample
sh
sql
svg
ttf
txt
woff
woff2

내가 가지고 있는 모든 extn 파일을 검색하여 스캔한 폴더에 복사하는 명령을 실행하고 싶습니다. 감사해요!

답변1

루프는 for너무 장황하지 않습니다.

$ shopt -s globstar nullglob dotglob
$ for i in **/*.{sql,conf,py,csv}; do 
    cp "$i" "scan/$(basename "$i")"
  done

관련 정보