2011-07-11 38 views
4

我製作的bash腳本的一部分涉及到rar分割文件,然後在分割文件完成後將分割文件移動到另一個目錄。Bash在名稱中找到並移動帶有'[]'的文件

所以如果我有一個像「test file.txt」這樣的文件,它會首先被渲染爲「[test] file.txt.part1.rar」,「test file.txt.part2.rar」,然後這兩個rar都會被移到另一個目錄。

我有rar位工作正常,但我遇到的問題找到&移動。

這裏是我的腳本:

#!/bin/bash 

# [...]  

rar a -m0 -v104857600b "$1.rar" "$1"; 

find $folder -name "$1.part*" -exec mv {} $someotherfolder \; 

但是它似乎並不奏效。我已經測試過從shell中找到一個班輪,我猜這個問題是因爲這些文件在名稱中有括號 - >「[」和「]」

你們認爲什麼?

+1

嘗試逃跑呢? '-name'\ [test \]''... – cnicutar

回答

4

'['和']'用於shell來描述字符集。你必須用'\'來避開它們才能獲得正確的行爲。如果你不逃避它們,你告訴找到't'或'e'或's'或't'的文件:)

要做到這一點與參數$ 1,你必須使用類似的東西:

param=$(echo $1 | sed '[email protected]\[@\\[@g'| sed '[email protected]\]@\\]@g') 

,並使用 '$ PARAM' 而不是 '$ 1'

我的2美分

+0

謝謝!最後讓它使用這種方法工作,不得不將單引號改爲雙引號>。< – lelouch

+0

歡迎您!這就是爲什麼我比Python更喜歡python的原因之一。我厭倦了這樣的事情^^ – neuro

+0

你可以將你的sed調用合併爲一個sed調用,如下所示:sed's @ \ [@ \\ [@ g; s @ \] @ \\] @ g' – gaoithe

相關問題