我正在尝试创建一个脚本,提示用户输入两个文件名。验证文件名是否存在并且是常规文件。如果两者都存在并且是常规文件,则显示两个文件的文件较旧的消息。如果它们相同,那么只显示一个。
任何帮助都会被证实
#!/bin/bash
FILE=$1
if [ ! -f "$FILE" ]
then
echo "File $FILE does not exist"
fi
答案 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