3

このディレクトリとフォーマットで多くのファイルを移動しようとしています:

/1.12.268/1.12.268_Hi_3D.jpg

このディレクトリとフォーマットへ:

/1.12.0268/1.12.0268_Hi_3D.jpg

すべての新しいフォルダを作成するRegExを実行できました。

ls 1* | find . -type d | awk '{print("mkdir "$1)}' | sed 's/[0-9][0-9][0-9]*/0&/2'

mvしかし、すべてのファイルを新しいフォルダーに移動して名前を変更するステートメントを作成するために使用する正規表現を理解できませんか?

これは私が来たのと同じくらい近いですが、フォルダが逆になり、ファイルの名前が変更されていません。

ls 1* | find . -type f | awk '{print("mv "$1" "$1)}' | sed 's/[0-9][0-9][0-9]*/0&/2'

私はこの出力を取得します:

mv ./1.12.0269/1.12.269_Low_Tech.gif ./1.12.269/1.12.269_Low_Tech.gif
mv ./1.14.0410/1.14.410_hi_3d.jpg ./1.14.410/1.14.410_hi_3d.jpg
mv ./1.14.0410/1.14.410_hi_tech.jpg ./1.14.410/1.14.410_hi_tech.jpg
mv ./1.14.0410/1.14.410_low_3d.png ./1.14.410/1.14.410_low_3d.png
mv ./1.14.0410/1.14.410_low_tech.png ./1.14.410/1.14.410_low_tech.png
mv ./1.14.0845/1.14.845_hi_3d.jpg ./1.14.845/1.14.845_hi_3d.jpg
mv ./1.14.0845/1.14.845_hi_tech.jpg ./1.14.845/1.14.845_hi_tech.jpg
mv ./1.14.0845/1.14.845_low_3d.png ./1.14.845/1.14.845_low_3d.png
mv ./1.14.0845/1.14.845_low_tech.png ./1.14.845/1.14.845_low_tech.png

私が実際にこれが欲しいとき:

mv ./1.12.269/1.12.269_Low_Tech.gif ./1.12.0269/1.12.0269_Low_Tech.gif
mv ./1.14.410/1.14.410_hi_3d.jpg ./1.14.0410/1.14.0410_hi_3d.jpg
mv ./1.14.410/1.14.410_hi_tech.jpg ./1.14.0410/1.14.0410_hi_tech.jpg
mv ./1.14.410/1.14.410_low_3d.png ./1.14.0410/1.14.0410_low_3d.png
mv ./1.14.410/1.14.410_low_tech.png ./1.14.0410/1.14.0410_low_tech.png
mv ./1.14.845/1.14.845_hi_3d.jpg ./1.14.0845/1.14.0845_hi_3d.jpg
mv ./1.14.845/1.14.845_hi_tech.jpg ./1.14.0845/1.14.0845_hi_tech.jpg
mv ./1.14.845/1.14.845_low_3d.png ./1.14.0845/1.14.0845_low_3d.png
mv ./1.14.845/1.14.845_low_tech.png ./1.14.0845/1.14.0845_low_tech.png

どんな助けでも大歓迎です!

4

2 に答える 2

1

renameオプションを使用していますか?基本的にはこの種のもののために作られています。

もしそうなら、あなたのためにrename -n 's/[0-9][0-9][0-9]/0$&/g'働くはずです。(-nはデバッグ用です。実際の名前変更のために削除してください)。

于 2012-08-10T15:21:31.803 に答える
1

これを行うには汚い方法があります。試してみる。

ls 1* | find . -type f | awk '{print("mv "$1" "$1)}' | sed 's/[0-9][0-9][0-9]*/0&/6' | sed 's/[0-9][0-9][0-9]*/0&/8'
于 2012-08-10T17:02:39.880 に答える