2012-08-10 14 views
3

我想移動大量文件的這個目錄和格式:正則表達式移動和改變文件名

/1.12.268/1.12.268_Hi_3D.jpg

到這個目錄和格式:

/1.12.0268/1.12.0268_Hi_3D.jpg

我已成功地運行創建所有新的文件夾,我的正則表達式:

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

任何幫助,不勝感激!

回答

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' 
+0

好呼叫夥計,完美的作品! – 2012-08-10 18:32:09

1

是否使用rename選項?這基本上是爲了這種東西。

如果是這樣,rename -n 's/[0-9][0-9][0-9]/0$&/g'應該爲你工作。 (-n僅用於調試,將其刪除以進行實際的重命名)。

+0

這將工作在Linux上很好,但我沒有提到我使用的是一個mac,我選擇的CLI工具是這樣的 - 有限的。儘管感謝您的整潔解決方案! – 2012-08-10 18:32:47