Score:0

วิธีสร้างการกำหนดค่าสำหรับการค้นหาและลบสคริปต์ของคุณ

ธง cn

ฉันมีสคริปต์ที่ทำงานต่อไปนี้: ค้นหาไฟล์ตามเกณฑ์ที่กำหนดในไดเร็กทอรี

ค้นหาเอกสาร/ไฟล์/บันทึกไฟล์/ -mtime +1d -type f '(' -name '*.log' -or -name '*[0-9].*' ')' -delete

ตอนนี้ฉันต้องการสร้างไฟล์ปรับแต่งสำหรับสคริปต์นี้ ซึ่งคุณสามารถทำลาย ส่วนขยาย เวลาแก้ไข หรือชื่อไฟล์ด้วยตัวคุณเอง

ฉันไม่เคยสร้างไฟล์ปรับแต่งมาก่อนและฉันยังใหม่กับ zsh ดังนั้นฉันจึงไม่รู้ว่าจะทำอย่างไร ความท้าทายที่นี่คือเราควรจะทำงานเนื่องจากไฟล์นี้มีไว้สำหรับลูกค้า

hr flag
คุณ (หรือลูกค้าของคุณ) ใช้ `macosx` ตามที่แท็กของคุณบอกเป็นนัยหรือไม่
Mahmoud avatar
cn flag
ใช่ ทั้งฉันและลูกค้าใช้ macosx
sudodus avatar
jp flag
Ubuntu เวอร์ชันใดและเวอร์ชันใดของ 'find' ที่คุณใช้อยู่
Mahmoud avatar
cn flag
ฉันกำลังทำงานกับ macos โดยใช้ iterm2 สำหรับรุ่นของ find ฉันไม่รู้ แม้ว่าฉันจะรู้ว่าฉันใช้ zsh 5.8 ถ้านั่นช่วยได้
sudodus avatar
jp flag
คุณควรพิมพ์เวอร์ชันด้วย `find -version` ฉันถามเพราะไวยากรณ์ของคุณสำหรับ `mtime` ใช้ไม่ได้สำหรับฉัน
Mahmoud avatar
cn flag
พิมพ์ ```fins -version``` ผลลัพธ์สำหรับฉันใน ``` ค้นหา: ตัวเลือกที่ผิดกฎหมาย -- v การใช้งาน: ค้นหา [-H | -L | -P] [-EXdsx] [-f เส้นทาง] เส้นทาง ... [นิพจน์] หา [-H | -L | -P] [-EXdsx] -f เส้นทาง [เส้นทาง ...] [นิพจน์]```
sudodus avatar
jp flag
ฉันคิดว่าคุณควรถามเว็บไซต์สำหรับ macos เพราะ `find` ทำงานแตกต่างจากที่นี่ที่ Ubuntu
terdon avatar
cn flag
คุณสามารถถามใน [unix.se] หรือ [apple.se] ได้ แต่หากคุณถาม โปรดอธิบายว่าทำไมคุณถึงต้องการไฟล์ปรับแต่ง นั่นเป็นวิธีที่ซับซ้อนและใช้งานยากเหตุใดจึงไม่ส่งสตริงการค้นหาเป็นอาร์กิวเมนต์หรือตัวเลือกเมื่อเรียกใช้สคริปต์ การใช้ไฟล์กำหนดค่าทำให้ทุกคน (ของคุณและผู้ใช้ของคุณ) ใช้ชีวิตยากขึ้นโดยเปล่าประโยชน์
Mahmoud avatar
cn flag
ฉันเพิ่งถามใน Ask Different เหตุผลในการกำหนดค่าเป็นเพียงว่ามันเป็นงาน ในการสร้างสคริปต์ที่ฉันพูดถึงมันเป็นทางเลือกที่จะรับประทานอาหารกลางวันของสคริปต์จากไฟล์กำหนดค่า เมื่อถามว่าเราจะทำอย่างนั้นได้อย่างไร เราได้รับมอบหมายให้คิดออกเอง (เป็นการท้าทาย) แม้ว่าเราจะไม่ได้ผลลัพธ์ที่สามารถชี้นำเราได้ว่าจะทำอย่างไร แม้ว่าฉันจะขอบคุณเวลาและความพยายามในการช่วยเรา!
Score:0
ธง bz

หากต้องการใช้ไฟล์ปรับแต่งสำหรับสคริปต์นี้ แสดงว่าสคริปต์จะต้องอ่านพารามิเตอร์บางตัวจากไฟล์ปรับแต่ง

ไฟล์กำหนดค่า config.txt:

เส้นทาง =.
ส่วนขยาย = sh
ม็อดไทม์=1
ชื่อไฟล์ = ทดสอบ

ไฟล์สคริปต์:

#!/bin/bash

lines=$(<config.txt) #read config.txt

สำหรับบรรทัดใน $line; ทำ # แยกวิเคราะห์แต่ละบรรทัดและแยกคีย์ค่าพารามิเตอร์
  ถ้า [[ $line = *"="* ]]; จากนั้น # ถ้าคำมี "="...
     vars[${line%%=*}]=${line#*=} # จากนั้นตั้งเป็น associative-array key
  ไฟ
เสร็จแล้ว
ค้นหา ${vars[path]} -mtime ${vars[modtime]} -type f "(" -name "*.${vars[extension]}" -or -name "${vars[ชื่อไฟล์]}.* " ")"

อีกวิธีหนึ่งคือใช้สคริปต์ที่มีอาร์กิวเมนต์และระบุพาธ นามสกุล เวลาแก้ไข หรือชื่อไฟล์ดังนี้:

#!/bin/bash

ช่วย()
{
   เสียงก้อง ""
   echo "การใช้งาน: $0 -p Path -e fileExtension -m modifiedTime -f fileName"
   echo -e "\t-path เส้นทางที่จะค้นหา"
   echo -e "นามสกุลไฟล์ \t-ext"
   echo -e "\t-modtime แก้ไขเวลา เช่น +1d "
   echo -e "\t-ชื่อไฟล์ชื่อไฟล์"
   ทางออก 1 # ออกจากสคริปต์หลังจากช่วยพิมพ์
}

ในขณะที่รับตัวเลือก "p:e:m:f:"
ทำ
   กรณี "$opt" ใน
      p) pathFile="$OPTARG" ;;
      จ) extension="$OPTARG" ;;
      ม.) modifiedTime="$OPTARG" ;;
      ฉ) fileName="$OPTARG" ;;
      ? ) ช่วย ;; # พิมพ์วิธีใช้ในกรณีที่พารามิเตอร์ไม่มีอยู่จริง
   เอสแซค
เสร็จแล้ว

# พิมพ์ความช่วยเหลือในกรณีที่พารามิเตอร์ว่างเปล่า
ถ้า [ -z "$pathFile" ] || [ -z "ส่วนขยาย $" ] || [ -z "$modifyTime" ] || [ -z "ชื่อไฟล์$" ]
แล้ว
   echo "พารามิเตอร์ว่าง กรุณาตรวจสอบ...";
   ช่วย
ไฟ

ค้นหา $pathFile -mtime $modifyTime -type f "(" -name "*.$extension" -or -name "$fileName.*" ")"

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา