检查脚本中是否存在文件

检查脚本中是否存在文件

所以我有一个名为 bobv1.txt 的文件名,我不想手动检查 bobv2.txt 是否在网站上。网站上的 bobv1.txt 将被 bobv2.txt 替换。我已下载 html 页面并确定了 bobvX.txt 的完整下载路径,并且我知道该文件在我的文件系统中。我如何判断该文件是否已在我的文件系统中?我需要它适用于所有后续版本。

答案1

如果你需要 shell 脚本,那么你可以使用这个:

#!/bin/bash
file="$1"

if [ -f "$file" ]; then
    echo "File $file exists."
else
    echo "File $file does not exist."
fi

您可以像这样运行它:

bash test.sh /tmp/bobv2.txt

答案2

有很多方法可以检查文件是否存在。

  • 使用test命令(又名[)来做[ -f /path/to/file.txt ]
  • 使用重定向尝试打开文件(请注意,如果您没有读取该文件的权限,则此方法无效)

    $ bash -c 'if < /bin/echo ;then echo "exists" ; else echo "does not exist" ; fi'                                                                                       
    exists
    $ bash -c 'if < /bin/noexist ;then echo "exists" ; else echo "does not exist" ; fi'                                                                                    
    $ bash: /bin/noexist: No such file or directory
    does not exist
    

    或者消除错误信息:

    $ 2>/dev/null < /etc/noexist || echo "nope"                                                                                                                            
    nope
    
  • 使用外部程序,例如stat

    $ if ! stat /etc/noexist 2> /dev/null; then echo "doesn't exist"; fi                                                                                                   
    doesn't exist
    

    find命令:

    $ find /etc/passwd
    /etc/passwd
    
    $ find /etc/noexist
    find: ‘/etc/noexist’: No such file or directory
    

相关内容