ค้นหาและคัดลอกสคริปต์อย่างง่ายสำหรับ linux [ปิด]


2

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

ดังนั้นโดยพื้นฐานแล้วมันควรจะทำงานเหมือน "./findandcopy [filename]" นี่คือสิ่งที่ฉันได้รับ:

#!/bin/sh

ARGS=1
E_BADARGS=65
E_NOFILE=66

if [ $# -ne "$ARGS" ]  # Correct number of arguments not passed
 then
  echo "Usage: `basename $0` filename"
  exit $E_BADARGS
fi


'find ./ -name \$1'  -exec cp {} /home/marc/ \;

แต่นั่นจะไม่ทำงานสำหรับฉัน ขอบคุณสำหรับความช่วยเหลือใด ๆ


เพียงแค่ใช้find .แทนfind ./- คุณไม่จำเป็นต้องพิมพ์ทับในตอนท้ายของชื่อไดเรกทอรีและถ้าคุณได้รับในนิสัยของการพิมพ์./เมื่อคุณหมายถึงไดเรกทอรีปัจจุบัน (ซึ่ง.จะพอเพียง) แล้วสักวันหนึ่งคุณ' จะพิมพ์โดยไม่ตั้งใจ/หรือ/.อาจมีผลลัพธ์ที่ร้ายแรง คุณไม่ต้องการ/ที่ส่วนท้ายของ/home/marc/ทั้ง
สกอตต์

คำตอบ:


3

คุณควรใช้:

find ./ -name "$1" -exec cp {} /home/marc/ \;

ไม่มีคำพูดเดียวรอบ ๆ มัน มิฉะนั้นเชลล์จะถือว่าfind ./ -name \$1คำสั่งทั้งหมดเป็นชื่อไฟล์เดียวและพยายามดำเนินการนั้น

คุณควรอ้างอิงอาร์กิวเมนต์"$1"เพื่อป้องกัน whitespace หรือ globs ในชื่อไฟล์จากการขยาย


ทำงานตอนนี้ขอบคุณสำหรับการตอบสนองอย่างรวดเร็ว :) เดาฉันควรตรวจสอบบทเรียนสคริปต์พื้นฐานบางอย่าง ^^
LetzFetz

ฉันขอแนะนำอันนี้: tldp.org/LDP/abs/html - คุณจะพบตัวอย่างสำหรับเกือบทุกอย่างที่นั่น โปรดทราบว่าเมื่อถามคำถามในอนาคตมันจะดีกว่าเสมอที่จะเจาะจงมากกว่า "มันจะไม่ทำงานสำหรับฉัน" หากคุณได้รับข้อผิดพลาดโปรดรวมพวกเขา
slhck

ขอบคุณสำหรับเคล็ดลับและเกี่ยวกับข้อผิดพลาดที่เป็นปัญหาของฉันเพราะมันไม่ได้ทำอะไรเลยไม่มีข้อผิดพลาดหรือผลลัพธ์ใด ๆ
LetzFetz
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.