我有一个.jpg
不断增长的文件目录。我想将最新的副本复制到其他地方。这就是我目前拥有的并且可以正常工作,只是好奇是否有更好的方法来标识最新的jpg文件而不是使用ls
and tail
。
#!/bin/bash
cd /home/pi/JPGS
fn=$(ls -rt1 | tail -1)
mv -f $fn /home/pi/WWW/webpic.jpg
文件名中有许多字符会使此操作失败。您可以使用以下方法进行改进:
#! /bin/sh -
cd /home/pi/JPGS || exit
fn=$(ls -t | head -n1)
mv -f -- "$fn" /home/pi/WWW/webpic.jpg
zsh
split + glob运算符在列表上下文(在以外的类似Bourne的shell中)中不加引号的变量,您几乎从来不想这样做。--
标记选项的结尾,因此"$fn"
如果以开头,则不会被视为选项-
。
如果文件名包含换行符,但不包含空格,制表符,星号,问号,右方括号或以破折号开头,则此操作仍将失败。
最好zsh
在这里使用:
#! /bin/zsh -
mv -f /home/pi/JPGS/*.jpg(.om[1]) /home/pi/WWW/webpic.jpg
(.om[1])
是全限定词,它们是zsh
特定功能。.
限制了水珠,以普通文件(不包括符号链接,目录,设备......),om
是Ø上刻申米odification时间,[1]
只取第一个文件。
请注意,如果要将其分配给shell变量,则必须是一个数组变量:
fn=(/home/pi/JPGS/*.jpg(.om[1]))
(并不是说它对以后的使用方式有很大的不同)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句