从目录中递归查找所有文件扩展名并将所有扩展名文件复制到单个目录

从目录中递归查找所有文件扩展名并将所有扩展名文件复制到单个目录

我有一个带有子目录的目录,其中有多个扩展文件。我想将所有 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

相关内容