คุณดูเหมือนจะสับสนหลายอย่าง
set today = 'date +%Y'
ดูเหมือนว่าไวยากรณ์ tcsh แต่แม้ใน tcsh มันกำหนดสตริงdate +%Y
ให้กับตัวแปรtoday
ก็ไม่ได้เรียกใช้date
คำสั่ง เนื่องจากคุณอาจใช้ bash หรือ POSIX เชลล์อื่น ๆ ไวยากรณ์ของการมอบหมายคือtoday=some_value
(โดยไม่มีช่องว่างรอบเครื่องหมายเท่ากับ) ในการรันคำสั่งและกำหนดเอาต์พุตให้กับตัวแปรให้ใช้การทดแทนคำสั่ง :
today=$(date +%Y-%m-%d)
(ฉันได้ทำตามข้อกำหนดวันที่แล้ว) คุณสามารถใช้ backquotes แทนดอลลาร์วงเล็บ แต่ก็มีแนวโน้มที่จะเป็นความสับสนสายตาด้วยคำพูดไปข้างหน้าและกฎระเบียบสำหรับเมื่อคุณต้องการคำพูดที่อยู่ภายในคำสั่ง backquoted จะสวยซับซ้อนและการดำเนินการขึ้นอยู่กับดังนั้นจึงเป็นเรื่องดีที่จะไม่ติด$(…)
(ซึ่ง มีผลเช่นเดียวกันกับไวยากรณ์ saner)
คุณใช้&
เมื่อสิ้นสุดคำสั่งหลาย ๆ คำสั่ง ทำให้คำสั่งดำเนินการในพื้นหลังซึ่งไม่ต้องการที่นี่ ฉันสงสัยว่าคุณหมายถึง&&
ซึ่งหมายถึงการดำเนินการคำสั่งต่อไปเฉพาะในกรณีที่คำสั่งแรกประสบความสำเร็จ
today=$(date +%Y-%m-%d)
mkdir -p The_Logs &&
find …
ทางเลือกในการใช้หลังจากแต่ละคำสั่งคือการเริ่มต้นสคริปต์ของคุณด้วย&&
set -e
สิ่งนี้บอกให้เชลล์หยุดการเรียกใช้งานสคริปต์ทันทีที่คำสั่งใด ๆ ส่งคืนสถานะที่ไม่ใช่ศูนย์ (ยกเว้นคำสั่งที่อยู่ในif
เงื่อนไขและอีกสองสามกรณี)
set -e
today=$(date +%Y-%m-%d)
mkdir -p The_Logs
find …
find
คำสั่งของคุณใช้ได้แต่อาจไม่ได้ทำในสิ่งที่คุณตั้งใจจะทำ (แม้ว่าฉันจะไม่รู้ว่ามันคืออะไร)
คุณกำลังสร้างไดเรกทอรีที่มีและจากนั้นทันทีภายในด้วยmkdir
find
สิ่งนี้จะไม่เป็นประโยชน์หากไม่มีไดเรกทอรีอยู่แล้ว คุณหมายถึงการสร้างไดเรกทอรีสำหรับบันทึกของวันนี้และย้ายไฟล์ล่าสุดจากThe_Logs
ไปยังไดเรกทอรีที่ชื่อว่าThe_Logs.2012-02-11
หรือไม่
mkdir -p "The_Logs.$today"
find The_Logs -mtime -1 -exec mv {} "The_Logs.$today" \;
หรือคุณหมายถึงการเปลี่ยนชื่อไฟล์บันทึกในวันนี้เพื่อเพิ่มคำต่อท้าย$today
? ต้องมีการคำนวณชื่อไฟล์ที่แตกต่างกันสำหรับแต่ละไฟล์ที่จะย้าย
find The_Logs -mtime -1 -exec sh -c 'mv "$0" "$0.$today"' {} \;
โปรดทราบว่าฉันใช้-mtime
เพื่อย้ายไฟล์ตามเวลาที่แก้ไขและไม่ใช่-atime
ซึ่งเป็นเวลาที่ไฟล์อ่านครั้งสุดท้าย (หากระบบของคุณติดตามว่า - หากไม่ได้ใช้งาน Atime อาจจะไกลที่สุดเท่าที่ mtime)
:
เพราะมันจะถูกอ่านเป็นโฮสต์ใน rsync และ scp stackoverflow.com/a/37143274/390066