เครื่องหมายคำพูดคู่ในสคริปต์ Linux


1

ฉันกำลังพยายามสร้างสคริปต์ที่ย้ายไปยังโฟลเดอร์เฉพาะแล้วเปลี่ยนชื่อและย้ายไฟล์ทั้งหมดไปยังตำแหน่งอื่น อย่างไรก็ตามฉันได้รับข้อผิดพลาดในตอนท้ายของคำสั่ง JHEAD เนื่องจากช่องว่างระหว่างการจัดรูปแบบวันที่และเวลา ฉันลองใช้เครื่องหมายคำพูดคู่อัญประกาศรอบ ๆ พื้นที่ ฯลฯ ไม่ทำงาน

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม

cd /home/fitur/Backup/Temp/

jhead_cmd='jhead -norot -ft -n/home/fitur/Pictures/Photos/%Y/%Y-%m-%d_%H:%M:%S {}'

find . -type f -name "*.JP*" -exec $jhead_cmd \;
find . -type f -name "*.jp*" -exec $jhead_cmd \;

มันจะทำอะไรกับไม่มีที่ว่างระหว่าง -n และ /home... ในตัวแปร jhead_cmd ของคุณหรือไม่ เห็นได้ชัดว่าหมายถึงการผ่านสตริงที่ตั้ง ... ควรใช้อัญประกาศคู่ตามที่คุณกำลังจัดรูปแบบภายในฉันจะคิดว่าคำพูดเดียวจะเป็นสตริงตัวอักษร ... ?
Kinnectus

@BigChris: Manpage บอกว่าตกลง: linux.die.net/man/1/jhead
Jan

เพียงเพื่อแสดงความคิดเห็นในโพสต์ของตัวเอง ควรเป็น -nf / home / fitur / Pictures / Photos /% Y /% Y-% m-% d% H:% M:% S {} 'และไม่ใช่ -n / home / fitur / Pictures / Photos / % Y /% Y-% m-% d_% H:% M:% S {} 'สังเกตว่าขีดเส้นใต้ระหว่าง% Y. % m-% d และ% H:% M:% S มันควรจะเป็นระยะห่าง
Fitur

คำตอบ:


1

ถ้าคุณรวมทั้งสอง find คำสั่งโดยทำให้ชื่อ case insensitive คุณสามารถหลีกเลี่ยงตัวแปร:

find . -type f -iname "*.jp*" -exec jhead [...] {} \;
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.