
以下のように、一部のファイルを拡張子にコピーできます。
cp *.txt ../new/
しかし、拡張子なしですべてのファイルをコピーする方法は?
答え1
@ubaid-ashrafの答えはほとんどそうです。拡張子なしでファイルを指定する方法は次のとおりksh
です。
cp -- !(*.*) /new/path/
ファイル名にドットがあるファイルをスキップします。
で動作させるには、()と()のオプションをbash
有効にする必要があります。extglob
shopt -s extglob
kshglob
zsh
set -o kshglob
答え2
次のことができます。
cp -- !(*.txt) /path/to/directory
上記のコードは、.txt拡張子を持たないすべてのファイルをコピーします。パイプ文字を使用して複数の拡張子を提供することもできます。
たとえば、
cp -- !(*.txt|*.c|*.py) /path/to/directory
答え3
find + grepを使用すると、拡張子のないファイルのみをインポートできます。
find . -maxdepth 1 -type f | sed 's/^\.\///' | grep -v "\."
したがって、コピーコマンドは次のようになります。
cp ` find . -maxdepth 1 -type f | sed 's/^\.\///' | grep -v "\." ` destination_folder