[英]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.