Bash

用於檢查是否存在具有特定副檔名的一個或多個文件的 Shell 腳本?

  • October 29, 2018

我想編寫一個腳本來查找具有特定副檔名的文件。我做了這麼多:

#!/bin/bash
file="/home/Savio/Dsktop/check/*.csv"
file1="/home/Savio/check/*.txt"
if [[ -f "$file" && -f "$file1" ]];
then
   echo " found."
else
   echo "not found."
fi

文件check夾包含子文件夾的位置。如果有任何錯誤請糾正我

如果你不想遞歸,你可以做

export DIR=/home/Savio/Dsktop/check
if ls ${DIR}/*.txt &>/dev/null && ls ${DIR}/*.csv &>/dev/null
then
   echo "Found."
else
   echo "Not found."
fi

或者,在perl

perl -e '
   $DIR="/home/Savio/Dsktop/check";
   @a= glob "${DIR}/*.txt";
   @b= glob "${DIR}/*.csv"; 
   print  @a && @b ? "Found.\n" : "Not found.\n"
' 

如果您確實想要遞歸,則其他答案中提出的解決方案將起作用。find您可以通過在找到的第一個匹配項後停止來使其更快:

export DIR=/home/Savio/Dsktop/check
CSV=$(find "$DIR" -name *.csv|head -n1)
TXT=$(find "$DIR" -name *.txt|head -n1)
[ ! -z "$CSV" ] && [ ! -z "$TXT" ] && echo Found || echo Not found

參考

引用自:https://unix.stackexchange.com/questions/87456