2015-12-07 78 views
0

我正在使用Hazel並運行一些基本的shell命令。使用隨機名稱創建文件夾並將文件移動到其中

當我將圖像拖入我選擇的文件夾時,它會創建一個由隨機20位唯一字符串命名的文件夾,並將文件添加到此文件夾中。太棒了。

我遇到的問題是,當我將多個文件添加到文件夾中時,我只想創建一個隨機字符串文件夾,並將所有拖動文件添加到該新文件夾中。

當前爲添加到文件夾的每個圖像創建一個新的隨機字符串文件夾,並將圖像移動到那裏。

我的shell代碼如下:

randomstring=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 20 | head -n 1) 
mkdir -p $randomstring 
mv $1 $randomstring 

任何幫助,將不勝感激:)

+0

我可以;噸告訴腳本如何調用。當以所有文件作爲參數調用時,請嘗試'mv $ * $ randomstring'。當它被調用很多次時,你必須在某處存儲子目錄的名稱(或者你可以找到類似於'find。-type d'的東西)? –

+0

@StevenMorton如果您想將每個參數文件移動到新的* $ randomstring *文件夾,只需運行'mv「$ @」$ randomstring /'。除此之外,您必須保留文件夾的名稱 - 因爲它是隨機生成的,也就是說,除了運行腳本兩次並獲取相同的隨機名稱之外,您不需要保留該文件夾的名稱。 – Rubens

+0

Hazel在擴展名爲.bmp的文件夾中的所有文件上運行腳本。這就是它運行腳本的原因,每個文件都在它自己的目錄中。我想在創建子文件夾的目錄上運行腳本,並將任何.bmp文件添加到具有唯一字符名稱的文件夾中。在這種情況下,$ 1用於引用腳本運行的文件。 –

回答

0

...我想只能創建一個隨機字符串的文件夾,並添加所有的拖累 文件到那個新的文件夾。

如果你沒有其他的20個字符的名稱的文件夾那裏,只要前面加上一個測試,以檢查這些文件夾是否已經存在:

randomstring=????????????????????/ # 20 question marks, 1 slash (folders) 
set -e        # exit on error to be on the safe side 
[ -d $randomstring ] ||    # do next line unless directory exists 
randomstring=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 20 | head -n 1) 
mkdir -p $randomstring 
mv $1 $randomstring 
相關問題