【问题标题】:Trying to write a shell script to move most recent file from downloads to another folder尝试编写一个 shell 脚本将最近的文件从下载移动到另一个文件夹
【发布时间】:2016-07-10 04:53:17
【问题描述】:

我正在尝试编写一个脚本,该脚本将从我的下载文件夹中找到最近添加的项目并移动到另一个文件夹。我很接近但卡在最后一部分。我这样做是为了更好地学习 iTerm2,而不是出于实际原因。我意识到在浏览器中有更简单的方法可以做到这一点。

ls -t1 /Users/name/downloads |  head -n 1 | > Users/name/targetfolder

【问题讨论】:

    标签: macos shell download terminal iterm2


    【解决方案1】:

    如果项目是文件,您可以通过管道将您的 head 命令传递给 cp

     ls -t1 /Users/name/downloads | head -n 1 | xargs cp -t Users/name/targetfolder
    

    您还可以添加一个测试来检查该项目是文件还是目录:

    last=$(ls -t1 . |  head -n 1)
    todir=Users/name/targetfolder
    
    [ -d $last ] && cp -r "$last" "$todir" || cp "$last" "$todir"
    

    【讨论】:

      【解决方案2】:

      您正确地找到了最近的项目:

      ls -t1 /Users/name/downloads |  head -n 1
      

      但是你在这之后犯了错误。

      你可以做的是:

       mv $(ls -t1 /Users/name/downloads |  head -n 1) Users/name/targetfolder
      

      上面是一个标准的mv 命令,其语法是:

      mv filename target_filename   # if you are renaming a file. Or,
      
      mv filename target_dirname    # if moving the file to a different directory.
      

      $() 之间的任何命令都会被其输出替换。

      所以$(ls -t1 /Users/name/downloads | head -n 1) 被最新的文件替换。

      因此,基本上,该命令意味着mv most_recent_file Users/name/targetfolder

      【讨论】:

      • 我收到这个错误 -> mv: cannot stat 'filename': No such file or directory mv $(ls -t1 ~/Downloads | head -n 1) ~/todelete -> 我执行了这个并得到了上述错误。
      猜你喜欢
      • 1970-01-01
      • 2015-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多