检查哪个文件更新

时间:2018-02-21 19:11:58

标签: bash shell ubuntu

我正在尝试创建一个脚本,提示用户输入两个文件名。验证文件名是否存在并且是常规文件。如果两者都存在并且是常规文件,则显示两个文件的文件较旧的消息。如果它们相同,那么只显示一个。

任何帮助都会被证实

  #!/bin/bash
FILE=$1

if [ ! -f "$FILE" ]
then
    echo "File $FILE does not exist"
fi

3 个答案:

答案 0 :(得分:1)

您可以使用-nt和-ot标志按修改日期比较两个文件。来自下面测试手册的信息( man test

   FILE1 -nt FILE2
         FILE1 is newer (modification date) than FILE2
   FILE1 -ot FILE2
          FILE1 is older than FILE2

答案 1 :(得分:1)

您可以将其用于任意数量的文件:

#!/usr/bin/env bash

(($# > 0)) || exit 1

files=("$@")

for file in "${files[@]}"; do
    [[ -f $file ]] || { echo "'$file' is not a regular file!"; exit 2; }
done

oldest=${files[0]}
for file in "${files[@]}"; do
    [[ $file -ot $oldest ]] && oldest=$file
done

echo "Oldest is: $oldest"

答案 2 :(得分:0)

试试这个:

#!/bin/bash
FILE1=$1
FILE2=$2

for f in "$FILE1" "$FILE2" ; do
    if [ ! -f "$f" ] ; then
        echo "File $f does not exist or is not a regular file"
        exit 1
    fi
done

if [ "$FILE1" -nt "$FILE2" ] ; then
    echo "$FILE1"
else
    echo "$FILE2"
fi