【问题标题】:Bash script to move file to trash, and append name if exists将文件移动到垃圾箱的 Bash 脚本,如果存在则附加名称
【发布时间】:2018-04-24 02:59:30
【问题描述】:

我正在尝试编写一个 bash 脚本来提示用户输入文件名,如果文件存在于垃圾箱中,则增加文件名,然后将其移至垃圾箱。例如,如果垃圾箱中存在“file1”,则应将其重命名为“file1-1”,如果“file1-1”存在,则将其递增为“file1-2”,依此类推。

这是我目前所拥有的,但它不起作用:

 #!/bin/bash
 echo "Select file name: "
 read fileName
 if $fileName in ~/.TRASH
     then
     echo "$fileName found."
     rename $fileName=$fileName+1
     trash $fileName
     echo "$fileName has been moved to trash."  
 else
     echo "$fileName not found."
     trash $fileName
     echo "$fileName has been moved to trash."
 fi

我假设“if”或重命名/增量计数器有什么不正确的地方,但对于我来说,我无法弄清楚。

【问题讨论】:

  • if -e?请看:shellcheck.net
  • 我在那里运行它,真的无法获得任何相关信息。基本上,我在第 4 行“file1:找不到命令”和第 12 行“垃圾:找不到命令”上收到错误。
  • $fileName=$fileName+1 作为rename 的参数在我看来很有趣。这是什么意思?
  • 如果它是您系统上的一个选项并且您不想将其作为练习,我建议您简单地使用trash-cli 通过终端将内容放入垃圾箱。这将为您节省大量时间。

标签: bash


【解决方案1】:

if $fileName in ~/.TRASH 不是一个东西。你会这样做:

if [[ -e ~/.TRASH/"${fileName}" ]]

rename $fileName=$fileName+1 也不是一个东西。首先,您需要loop through the files backwards 以避免覆盖具有更高编号的文件,然后您需要取消文件名的相关部分,例如使用fileNumber="${fileName#*-}",然后您可以使用let fileNumber++ 递增它,并且最后你可以使用mv来移动它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多