我有大量的文件(數十萬),都有相同的名稱格式。 文件名格式爲: [前綴] [編號]後綴] 其中所有文件的[前綴]和[後綴]相同,只是編號部分發生變化。數字部分是一樣的東西0004732 因此,文件名是: [前綴] 004732 [後綴] [前綴] 004733 [後綴] [前綴] 004734 [後綴] 等使用正則表達式指定一個範圍的文件
我需要移動範圍大約100,000個文件(連續數字)到另一個目錄,我想知道是否可以用正則表達式來做到這一點。
我有大量的文件(數十萬),都有相同的名稱格式。 文件名格式爲: [前綴] [編號]後綴] 其中所有文件的[前綴]和[後綴]相同,只是編號部分發生變化。數字部分是一樣的東西0004732 因此,文件名是: [前綴] 004732 [後綴] [前綴] 004733 [後綴] [前綴] 004734 [後綴] 等使用正則表達式指定一個範圍的文件
我需要移動範圍大約100,000個文件(連續數字)到另一個目錄,我想知道是否可以用正則表達式來做到這一點。
您正在尋找character classes。這是一個有點難以指定使用正則表達式,因爲它適用於文本,而不是數字號碼的範圍,但它可以做這樣的事情(對文件1-100):
prefix[0-1][0-9][0-9]suffix
prefix[0-1]\d\dsuffix #this also works in PERL regex
更復雜的數字變得棘手。對於0-211:
prefix([0-1][0-9][0-9]|20[0-9]|21[0-1])suffix
只需注意:您的正則表達式不會匹配0-99的數字。就像'([0-9] | [1-9] [0-9] | 1 [0-9] [0-9] | 20 [0-9] | 21 [01])'應該可以工作,儘管。縮短版本:'(\ d | [1-9] \ d | 1 \ d \ d | 20 \ d | 21 [01])'。 –
如果您在Windows上,請安裝Cygwin,然後執行以下操作。如果您使用Mac OS X或Linux,只需打開一個終端即可。您需要執行以下操作:
ls PREFIX* | sed 's/PREFIX\(0[0-9]\)SUFFIX/mv & tmp\/PREFIX\1SUFFIX/' | sh
這是幹什麼的?
可以調整正則表達式來匹配你的電話號碼範圍通過查看以下內容: http://www.regular-expressions.info/numericranges.html
據我所知,沒有正則表達式(處理複雜的情況下),但你可以很容易地使用循環:
下面的代碼在Linux上運行。我使用CygWin在Windows上運行了simnilar代碼,它也可以工作。也許在Windows中有類似的方法。
如果這兩個數字具有相同的數字;
示例:從
[前綴] 000[後綴]
到
[前綴] 000056789 [後綴]
:
for ((i=12345; i<56789; i++)); do mv "[prefix]0000$i[suffix]" /newDirectoryPath done
否則,您可以使用多個(通常是兩個或三個)命令;
示例:從
[前綴] 000[後綴]
到
[前綴] 003456789 [後綴]
:
for ((i=12345; i<99999; i++)); do mv "[prefix]0000$i[suffix]" /newDirectoryPath done
for ((i=100000; i<999999; i++)); do mv "[prefix]000$i[suffix]" /newDirectoryPath done
for ((i=1000000; i<3456789; i++)); do mv "[prefix]00$i[suffix]" /newDirectoryPath done
如何通過正則表達式來移動文件? –
Windows還是Linux? – Alisa
'find'支持正則表達式。例如'找。 -type f -name「prefix1 [0-5] [0-9]後綴\ .txt」'用於文件100-159。 – beerbajay