Score:-1

จะเปลี่ยนชื่อไฟล์ใน Shell Script ได้อย่างไร?

ธง it

ฉันมีงานที่ต้องเปลี่ยนชื่อไฟล์จำนวนมากเป็นเนื้อหาที่แถว 1 colum2 (สตริง) ไฟล์ไม่มีนามสกุล ฉันยังต้องเพิ่ม .pdb เป็นส่วนขยายให้กับทุกไฟล์

จนถึงตอนนี้ฉันได้เขียนสิ่งนี้และใช้งานไม่ได้ :(

#! /ถัง/ทุบตี
สำหรับ f ในลำดับ/*; ทำ
mv "$f" "($ awk 'NR==1 {print=$2}').pdb";
เสร็จแล้ว

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

Someone avatar
my flag
ดูเหมือนปัญหาการบ้าน
it flag
ใช่ มันเป็นการบ้านแม้ว่าอาจารย์จะไม่ได้ให้ตัวอย่างหรือเอกสารใดๆ เกี่ยวกับวิธีการเลือกไฟล์ ใช้ awk หรือทำอะไรก็ตาม :)
Someone avatar
my flag
ดูเหมือนว่าจะไม่เป็นปัญหาที่เกี่ยวข้องกับ Ubuntu (บางทีคุณอาจใช้ Ubuntu แต่นี่ไม่ใช่ปัญหากับ Ubuntu แต่เป็นปัญหาเกี่ยวกับการเขียนสคริปต์ทุบตี) ฉันไม่คิดว่าสิ่งนี้จะได้รับคำตอบที่ดีในเว็บไซต์นี้ ดังนั้น โพสต์คำถามของคุณบน [Stack overflow](https://stackoverflow.com/) (BTW คำถามนี้อยู่ในหัวข้อ)
it flag
โอเค ขอบคุณ!!
Liso avatar
sd flag
นี่คือปัญหาของมหาวิทยาลัยหรือปัญหา hs? แค่ถาม..
Will avatar
id flag
ฉันรู้ว่านี่เป็นความคิดเห็นและไม่ได้แบ่งปันโดยทุกคน ⦠แต่เกิดอะไรขึ้นกับคำถามการบ้านเมื่อ OP ได้พยายามแก้ไขแล้ว ฉันไม่ต้องการทำการบ้านให้คนอื่น แต่สำหรับฉัน ไม่เป็นไรถ้าพวกเขาพยายามแล้ว
it flag
นั่นเป็นปัญหาของมหาวิทยาลัย
Score:1
ธง hr

สิ่งที่ควรทราบ:

  1. ไวยากรณ์สำหรับการแทนที่คำสั่งคือ $(คำสั่ง) ไม่ (คำสั่ง $ )

  2. ไวยากรณ์สำหรับการพิมพ์ฟิลด์ที่สองใน awk คือ พิมพ์ 2 เหรียญ ไม่ พิมพ์=$2

  3. คุณต้องส่งชื่อไฟล์เป็นอาร์กิวเมนต์ไปยัง awk ex awk 'NR==1 {พิมพ์ $2}' "$f"

โปรดทราบว่าไฟล์ใหม่จะถูกสร้างขึ้นโดยสัมพันธ์กับไดเร็กทอรีปัจจุบัน แทนที่จะเป็นไดเร็กทอรีย่อย ลำดับ (คำถามของคุณมีรายละเอียดไม่เพียงพอที่จะทราบว่านั่นคือผลลัพธ์ที่ตั้งใจไว้หรือไม่)

Score:0
ธง it

ขอบคุณคนขับเหล็ก! คำพูดช่วยได้มาก! คนที่ 3 คือนักแก้ปัญหาตัวจริง! นี่คือสคริปต์ที่ฉันเขียนในตอนท้าย:

#! /ถัง/ทุบตี
สำหรับ f ใน $(ls); ทำ
mv "$f" "$( awk 'NR==1 {พิมพ์ $2}' "$f" ).pdb";
เสร็จแล้ว

ถ้าใครมีวิธีที่ 'ฉลาดกว่านี้' ฉันก็ยินดีเป็นอย่างยิ่งที่จะได้ยินพวกเขา

ขอบคุณ!

Pilot6 avatar
cn flag
`f ใน $(ls)` ไม่สมเหตุสมผล ;-)
it flag
มันอาจจะดูไม่เข้าท่าแต่มันก็ทำได้ดีและนั่นคือสิ่งที่ดีที่สุดที่ฉันทำได้ในตอนนี้ หากคุณมีวิธีที่ชาญฉลาดกว่านั้น คุณยินดีที่จะสอนสิ่งที่ด้อยกว่าด้วยสมองขนาดใหญ่ของคุณ ;-)

โพสต์คำตอบ

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