簡體   English   中英

檢查是否存在與目錄同名的文件

[英]Check if a file exists with the same name as a directory

我正在嘗試創建一個腳本來確定每個子目錄是否存在'.zip'文件。 例如,我正在使用的目錄可能如下所示:

/folder1
/folder2
/folder3
folder1.zip
folder3.zip

然后該腳本將識別出“folder2”的“.zip”不存在,然后對其執行某些操作。

到目前為止,我已經提出了這個(下面)循環文件夾,但我現在卡住嘗試將目錄路徑轉換為包含文件名的變量。 然后我可以運行if來查看'.zip'文件是否存在。

#!/bin/sh

for i in $(ls -d */);
do
    filename= "$i" | rev | cut -c 2- | rev
    filename="$filename.zip"
done
# No need to use ls
for dir in */
do
  # ${var%pattern} removes trailing pattern from a variable
  file="${dir%/}.zip"
  if [ -e "$file" ]
  then
    echo "It exists"
  else
    echo "It's missing"
  fi
done

此處不需要捕獲命令輸出,但您的行應該是:

# For future reference only
filename=$(echo "$i" | rev | cut -c 2- | rev)

你可以這樣做:

#!/bin/sh

for name in $(ls -d */); do
    dirname=$(echo "${name}" | rev | cut -c 2- | rev)
    filename="${dirname}.zip"
    if [[ -f ${filename} ]] ; then
        echo ${dirname} has ${filename}
    else
        echo ${dirname} has no ${filename}
    fi
done

哪個輸出,為您的測試用例:

folder1 has folder1.zip
folder2 has no folder2.zip
folder3 has folder3.zip

可以在不調用ls情況下執行此操作,如果您執行此操作,這往往會變得很重要,但在這種情況下可能不是問題。

請注意,我沒有使用空間嵌入文件名對此進行測試,可能需要進行一些額外的調整。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM