2015-12-07 75 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 
相关问题