เข้ารหัสไฟล์ gnu- ขนานพร้อมช่องว่างหรืออักขระพิเศษ


2

ฉันพยายามเข้ารหัสไฟล์จำนวนมากด้วยรหัสด้านล่าง:

find . -name "*.vi" | sort | parallel --gnu -j 4 --workdir "$PWD" '
    echo "Encrypting {/.} ..."
    gpg -r user@myemail.com -o "/tank/test/{/.}.gpg" -e "{}"
';

สิ่งนี้ใช้ได้ดี แต่ถ้าชื่อไฟล์ไม่มีช่องว่างหรืออักขระพิเศษ (! หรือ ') นอกจากการตั้งชื่อไฟล์ใหม่ทั้งหมดแล้วมีวิธีทำให้รหัสนี้ใช้งานได้หรือไม่?

คำตอบ:


2

ดูเหมือนว่าข้อความมากเกินไป จำไว้ว่า GNU Parallel ถือว่า {} กำลังถูกแจงโดยเชลล์โดยตรง ลองลบ "" รอบ {} และ {/.}:

# Avoid typing --gnu ever again
echo '--gnu' >> ~/.parallel/config

find . -name "*.vi" | sort |
  parallel echo Encrypting {/.} ...";" gpg -r user@myemail.com -o /tank/test/{/.}.gpg -e {}

ธิ! ชื่อไฟล์ที่ได้มีช่องว่างของพวกเขาแทนที่ด้วย "\" แต่นั่นไม่ใช่ปัญหาฉันสามารถเรียกใช้คำสั่งเปลี่ยนชื่อหลังจากนั้น ขอบคุณคน!
Weekender

จากนั้นคุณยังลบไม่เพียงพอ "ลบเพิ่มเติมจำไว้ว่า {} และ {/.} ไม่เคย อยู่ข้างใน "หรือ"
Ole Tange
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.