【问题标题】:Creating folder with random name and moving files to it创建具有随机名称的文件夹并将文件移动到其中
【发布时间】:2015-12-07 20:04:40
【问题描述】:

我目前正在使用 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

任何帮助将不胜感激:)

【问题讨论】:

  • 我不知道脚本是如何被调用的。当使用所有文件作为参数调用时,尝试mv $* $randomstring。当它被多次调用时,您必须将子目录的名称存储在某个地方(或者您可以使用find . -type d之类的东西找到它)?
  • @StevenMorton 如果要将每个参数文件移动到新的 $randomstring 文件夹,只需运行 mv "$@" $randomstring/。除此之外,您必须保留文件夹的名称——因为它是随机生成的,也就是说,除了运行脚本两次并获得相同的随机名称之外,您不会这样做。
  • Hazel 对文件夹中扩展名为 .bmp 的所有文件运行脚本。这就是为什么它运行脚本并且每个文件都在它自己的目录中的原因。我想在创建子文件夹的目录上运行一个脚本,并将 .bmp 的任何内容添加到具有唯一字符名称的文件夹中。在这种情况下,$1 用于引用运行脚本的文件。
  • @Rubens 谢谢,但这仍然会产生相同的错误。当我运行预设的 Hazel 命令将 .bmp 文件排序到以创建日期命名的文件夹中时,这可以完美地工作,因为显然共享相同的值。这正是我需要为唯一字符串文件夹和添加进行镜像的内容。

标签: shell terminal


【解决方案1】:

...我只想创建一个随机字符串文件夹和所有拖动的 要添加到该新文件夹中的文件。

如果那里没有其他 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

【讨论】:

    【解决方案2】:

    您也可以通过KEV 关联注意为使用以下命令的文件夹随机命名


    mkdir -p {a,b}/{e,f,g}/{h,i,j}

    您可以通过“ ”使用空格字符,并通过使用上述 {a..z} 来使用字母范围

    例如

    mkdir -p {a,b}/{e,{a..z}' '{a..z},g}/{h,i,j}

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-02
      • 1970-01-01
      • 2021-11-30
      相关资源
      最近更新 更多