複数の拡張ファイルを含むサブディレクトリを含むディレクトリがあります。すべての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