複数のファイルを複数のディレクトリに移動

複数のファイルを複数のディレクトリに移動

次のディレクトリがあります

-rw-r--r-- 1 ualaoip2 mcm1    1073233 Sep 30 12:40 database.260.4-0.tar.gz
-rw-r--r-- 1 ualaoip2 mcm1  502373963 Sep 30 12:40 database.260.4-1.tar.gz
-rw-r--r-- 1 ualaoip2 mcm1  880379753 Sep 30 12:40 database.260.4-2.tar.gz
drwxr-xr-x 2 ualaoip2 mcm1       4096 Sep 30 13:41 db0file
drwxr-xr-x 2 ualaoip2 mcm1       4096 Sep 30 13:41 db1file
drwxr-xr-x 2 ualaoip2 mcm1       4096 Sep 30 13:41 db2file

ファイルを&cdatabase...0に移動したいと思います。folder0

これを行う最良の方法は何ですか?様々なバリエーションを試しました

for i in $(ls fi*) do; mv $i ./folder$i

しかし、彼らはいくつかのアイテムの名前を変更し、私が望んでいない多くのアイテムを上書きしました!

私が使ったバリエーション

find . -maxdepth 1 -type d -printf '%f\n' | sort /* why is it not sorted?

しかし、現在のディレクトリに 。

mkdir db{0..7} を使用してファイルを生成します。これが最善の方法ですか?

私はその答えをいくつかの言葉で説明できたらと思います。猿が見るだけでなく、猿がするのも言葉だ! :-)

ベストアンサー1

ファイル名形式が利用可能な場合は、次のコマンドを使用できます。

for i in $(seq 0 2); do mv database*-"$i".tar.gz "db${i}file"/; done

指示があります。あなたのファイルは安定した形式で表示され、database*-NUMBER.tar.gzディレクトリ名に同じ番号がありますdbNUMBERfile。私たちは最高の数(この場合は0..2)を生成し、この数に対してループを実行できます。データベースの場合は境界に$iあるため、単純で十分ですが、変数が定義されていないため機能しないため、以下を使用する必要があります。中かっこを使用すると、正しく解決できます。-.db$ifile$ifiledb${i}file$i

おすすめ記事