次のディレクトリがあります
-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
$ifile
db${i}file
$i