我需要将最新文件移动到文件名与命名约定“ServicesWebApp”匹配的目录中。
示例:有一个目录,其中有 5 个具有相似名称的文件。
ServicesWebApp-1005.war created on 3/10/2016
ServicesWebApp-1004.war created on 3/09/2016
ServicesWebApp-1003.war created on 3/08/2016
ServicesWebApp-1002.war created on 3/07/2016
ServicesWebApp-1001.war created on 3/06/2016
我需要将最新的目录移动到另一个目录,在本例中就是这样。 ServicesWebApp-1005.war 创建于 3/10/2016
答案1
如果您相信自己的时间戳,您也可以使用 oneliner。
mv $(ls -tr ServicesWebApp* | tail -1) /tmp/
或者如果您想依赖文件名。
mv $(ls ServicesWebApp* | sort -n | tail -1) /tmp/
答案2
你也可以尝试这个:
mv $(find . -type f -name "ServicesWebApp*" -printf "%T@ %f\n" | sort -n | awk '{print $2}' | tail -1 ) /new/file/path/
答案3
tstamp=0
file=
for f in ServicesWebApp*
do
y=$(stat -c "%Y" "$f")
if [ $y -gt $tstamp ]
then
file="$f"
tstamp=$y
fi
done
echo cp "$file" /somewhere/else
答案4
您可以尝试使用单行执行命令替换
$ mv $(ls -t /location/path/ServicesWebApp* | head -n1) /to/new/destination/path
向前走
$ ls -t /location/path/ServicesWebApp* | head -n1
/location/path/ServicesWebApp-1005.war
所以该命令必须解释为
$ mv /location/path/ServicesWebApp-1005.war /to/new/destination/path