คำถามติดแท็ก xargs

ยูทิลิตี้ในระบบปฏิบัติการยูนิกซ์ที่คล้ายกันสำหรับการส่งผ่านข้อโต้แย้งจำนวนมากไปยังโปรแกรมที่สามารถรับข้อโต้แย้งจำนวนเล็กน้อยเท่านั้น


3
ฉันจะใช้ find เพื่อคัดลอกไฟล์ที่พบทั้งหมดไปยังชื่อใหม่ในไดเรกทอรีเดียวกันได้อย่างไร
ฉันมีคำสั่งง่ายๆที่เกือบจะเป็นสิ่งที่ฉันต้องการ ต่อไปนี้จะค้นหาไฟล์ทั้งหมดที่มีคำต่อท้ายเป็น '_compressed.swf' และคัดลอกแต่ละไฟล์ลงในไดเรกทอรีเดียวกันโดยใช้ '.bak2' ต่อท้าย: ค้นหา '../content' -name '* _compressed.swf' -print0 | xargs -0 -I {} cp {} {} .bak2 ผลลัพธ์ ใน: /content/somefile_compressed.swf Out: /content/somefile_compressed.swf.bak2 อย่างไรก็ตามฉันต้องแทนที่ '_compressed.swf' ด้วย '_content.swf' ฉันต้องการใช้การค้นหาแทนที่การตั้งค่าสถานะแบบเรียกซ้ำบน cp เพื่อความสอดคล้อง วัตถุประสงค์ ใน: /content/somefile_compressed.swf Out: /content/somefile_content.swf
4 linux  bash  find  cp  xargs 

1
พยายามเข้าใจ xargs
เป้าหมายไม่ได้อยู่ในรายการtemp/run*.*ไฟล์ เป้าหมายคือการเข้าใจว่าทำไมคำสั่งที่สองไม่ทำงาน คำสั่งแรก: find . \( -name 'temp' \) -print0 | xargs -0 -L 1 -I datafind ls -ltr datafind แสดงรายการไฟล์ทั้งหมดที่อยู่ในโฟลเดอร์ temp จากไดเรกทอรีจริง คำสั่งที่สอง: find . \( -name 'temp' \) -print0 | xargs -0 -L 1 -I datafind ls -ltr datafind/run*.* ให้ไม่สามารถเข้าถึงข้อผิดพลาดในทุกไดเรกทอรีที่ทำงานกับคำสั่งก่อนหน้า ฉันค้นหาและอ่าน man man และตัวอย่าง แต่ฉันไม่สามารถหาสาเหตุที่คำสั่งที่สองไม่ทำงาน มีเบาะแสอะไรมั้ย

2
xargs touch ตามด้วยคำสั่งที่สอง
ฉันสุ่มเลือกไฟล์จากไดเรกทอรีที่ฉันต้องการประมวลผลและฉันต้องการใช้คำสั่งสัมผัสกับพวกเขาเพื่อที่ฉันจะได้รู้ว่าไฟล์สุดท้ายที่ถูกสร้างภาพจากนั้นใช้โปรแกรมสร้างภาพ บางสิ่งเช่นนี้ while [ 1 ]; do ls | shuf | xargs "touch & vizprogram"; done เนื่องจากฉันตรวจสอบชุดข้อมูลเหล่านี้ด้วยตนเองฉันต้องการ "Esc" จากลูป ณ จุดใดก็ได้เพื่อที่ฉันจะขัดจังหวะ vizprogram และวนซ้ำอีกครั้ง จากนั้นเมื่อฉันพบไฟล์ที่ฉันต้องการติดตามฉันต้องการ Ctrl + C และทำls -rt | tail -n 1เพื่อให้มีชื่อของไฟล์ล่าสุดที่ฉันใช้ ฉันลองสิ่งนี้ด้วยการวนรอบหรือขณะแทนแทนที่จะทำxargsแต่ฉันไม่สามารถทำ "Esc" บนวนรอบหลักได้ ความคิดใด ๆ ที่จะทำ "สัมผัสแล้ว vizprogram" ภายใน xargs?
2 bash  xargs 

3
วิธีการส่งออก grep เป็น scp?
ฉันมีไฟล์โดยที่แต่ละบรรทัดเป็นชื่อไฟล์ เนื้อหาของไฟล์: file1 file2 file3 ... ฉันเรียกใช้grepคำสั่งเพื่อรับชุดย่อยของรายการชื่อไฟล์ ฉันจะป้อนข้อมูลเอาต์พุตของgrepคำสั่งลงในได้scpอย่างไร? ฉันได้เล่นกับxargsและ $()ไม่ประสบความสำเร็จมาก ...
2 unix  grep  scp  pipe  xargs 

2
ฉันจะค้นหาไฟล์ที่ระบุชื่อเฉพาะในไดเรกทอรีที่ระบุชื่อซึ่งสามารถอยู่ที่ใดก็ได้ในระบบไฟล์ได้อย่างไร
ฉันพยายามค้นหาไฟล์ภายในไดเรกทอรีที่รู้ทั้งชื่อไฟล์และชื่อของไดเรกทอรี ตัวอย่างเช่นฉันต้องการค้นหา " ...don't know this part of file path stem).../dirname/filename.extension" ฉันมีความรู้สึกฉันกำลังมองหาสิ่งนี้: find / -type d -name "dirname" | xargs find * -type f -name "filename.extension" แต่ฉันไม่สามารถตีคอมโบที่ถูกต้องได้ วิธีที่ถูกต้องในการทำเช่นนี้คืออะไร?
2 find  xargs 

1
fswatch ไม่ส่งผ่านอาร์กิวเมนต์ไปยัง xargs
ฉันเริ่มใช้ fswatch บน os x ฉันอ่านแล้ว เกี่ยวกับการสอน แต่ตัวอย่างจากที่นั่นใช้ไม่ได้ด้วยเหตุผลบางอย่าง ฉันกำลังดำเนินการ fswatch /$HOME/Projects/utils/configs/.vimrc | xargs -0 -n 1 -I {} echo {} ในเทอร์มินัลและในเวลาเดียวกันฉันกำลังแก้ไขไฟล์ในเทอร์มินัลอื่น แต่ไม่มีอะไรออกมา ฉันพยายามวิ่งเพียง fswatch /$HOME/Projects/utils/configs/.vimrc และใช้งานได้อย่างสมบูรณ์โดยแสดงชื่อไฟล์ทุกครั้งที่แก้ไข ฉันทำผิดอะไร?
1 macos  xargs 

2
เหตุใดจึงไม่ xargs ในการค้นหาทำงานกับชุดคำสั่งที่ใช้ pushd และ popd เพื่อเดินทรีย่อยไดเรกทอรี
บนเครื่อง Linux Centos 4 ฉันพยายามสร้างบรรทัดคำสั่ง bash แบบง่าย ๆ เพื่อเดินโครงสร้างไดเรกทอรีด้านล่างไดเรกทอรีปัจจุบันที่กำหนดเองและในแต่ละไดเรกทอรีย่อยให้แตะที่ไฟล์รายการเนื้อหาของไดเรกทอรี แต่ไปป์/dev/nullและลบไฟล์ที่ถูกสัมผัส จุดที่ไม่ชัดเจนของสคริปต์นี้คือการทำให้ระบบไคลเอ็นต์ / เซิร์ฟเวอร์ NFS ต้นแบบเพื่อให้แน่ใจว่าเนื้อหาของแต่ละไดเรกทอรีสะท้อนการเปลี่ยนแปลงที่เกิดขึ้นกับเครื่องอื่นซึ่งอาจใช้เวลาในการเผยแพร่ ฉันพบวิธีแก้ปัญหานี้เพื่อหลีกเลี่ยงความล่าช้า ละเว้นข้อดีของเหตุผลในการทำเช่นนี้เพราะเหตุใดฉันจึงไม่เสนอสคริปต์ทุบตี [CentosMachine] find . -type d -print0 | xargs -0 -I {} pushd {}; touch xYzZy.fixZ; ls &> /dev/null; rm -f xYzZy.fixZ; popd xargs: pushd: No such file or directory bash: popd: directory stack …

1
ใช้เทอร์มินัล Linux / Unix เพื่อคัดลอกไฟล์จำนวนมากไปยังตำแหน่งใหม่
ฉันกำลังพยายามใช้เทอร์มินัล Linux เพื่อคัดลอกไฟล์จำนวนมากไปยังตำแหน่งใหม่ ฉันเบื่อคำสั่ง: sudo หา -i file_I_want | xargs cp $ 1 / place_I_want_everything_copied_to / ซึ่งทำให้เกิดข้อผิดพลาด วิธีที่ถูกต้องในการจัดการกับสิ่งนี้คืออะไร?
1 linux  unix  cp  xargs 

2
ค้นหา -print0 | xargs -0 grep ไม่ทำงานตามที่คาดไว้ใน Ubuntu 10.04
ฉันมีปัญหาแปลก ๆ เล็กน้อย ถ้าฉันวิ่ง: find . -iname '*.php' -o -iname '*.pl' -o -iname '*.html' | xargs grep -i users ฉันได้รับข้อผิดพลาดในการโหลดชื่อไฟล์ที่มีช่องว่าง แต่ก็มีบางไฟล์ที่ตรงกัน อย่างไรก็ตามหากฉันลองต่อไปนี้เพื่อจัดการชื่อไฟล์ที่มีช่องว่างอย่างถูกต้องจะไม่มีการคืนค่าที่ตรงกัน: find . -iname '*.php' -o -iname '*.pl' -o -iname '*.html' -print0 | xargs -0 grep -i users ผมทำอะไรผิดหรือเปล่า? คำสั่งที่สองควรส่งคืนฉันอย่างน้อยก็เป็นไฟล์ที่เหมือนกันกับไฟล์แรก แต่ฉันไม่พบรายการใด
shell  find  xargs 

1
วิธีการสร้างคำสั่ง grep ด้วยอาร์กิวเมนต์ตัวแปรใน bash?
ฉันพยายามทำสิ่งนี้ใน bash: grep ( date | awk '{print "2006-" $6}' ) /some/file/here แต่ไวยากรณ์ที่ไม่ถูกต้อง เป้าหมายคือการ grep / some / file / ที่นี่สำหรับรูปแบบ 2006-2011 โดย 2011 เป็นปีปัจจุบัน
bash  grep  awk  xargs 

2
จำนวน agruments ที่ยืดหยุ่นด้วย xargs
เป็นไปได้หรือไม่ที่จะระบุจำนวนอาร์กิวเมนต์ที่xargsใช้โดยไม่ทำอย่างชัดเจนด้วย-nตัวเลือก แต่โดยปริยายด้วยตัวคั่นดังนั้นพารามิเตอร์เดียวจะถูกคั่นด้วยช่องว่าง แต่กลุ่มของอาร์กิวเมนต์ที่ xargs ใช้ในครั้งเดียวจะถูกคั่นด้วย เช่น'\n'? ฉันต้องการส่งพารามิเตอร์จำนวนยืดหยุ่นให้กับสคริปต์: พารามิเตอร์เหล่านั้นถูกเก็บไว้ในรายการดังนี้: param1 param2 param1 param2 param3 param1 ควรเป็นไปได้ที่จะส่งพารามิเตอร์หนึ่งบรรทัดต่อครั้งไปยังสคริปต์ ฉันไม่ต้องการใช้สคริปต์พร็อกซีใด ๆ และไม่ต้องการเขียนรายการไฟล์หรือคำสั่งชั่วคราวลงดิสก์ ฉันต้องการอ่านพารามิเตอร์จากไฟล์ปรับเปลี่ยน "on the fly" (เช่นลบทุกบรรทัดอื่น ๆ ) และเปลี่ยนเส้นทางด้วย xargs ไปยังสคริปต์ปลายทาง สิ่งที่ฉันพยายามคือใช้'\n'เป็นตัวคั่นอาร์กิวเมนต์ แต่กว่า params ทั้งหมดในบรรทัดจะถูกตีความว่าเป็นอาร์กิวเมนต์เดียวแม้ว่าจะคั่นด้วยช่องว่าง
xargs 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.