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

Globbing หมายถึงการจับคู่ไฟล์ตามรูปแบบชื่อที่มีอักขระตัวแทน

2
คำสั่ง tar - ข้าม symlink
ฉันใช้คำสั่ง tar เป็น tar -cvf protTests.tar protTests/* ไปยังtarไฟล์ทั้งหมดภายในโฟลเดอร์, protTests. แต่นี่รวมถึงลิงก์สัญลักษณ์ภายในโฟลเดอร์ซึ่งไม่ได้เป็นที่ต้องการ มีตัวเลือกบรรทัดคำสั่งที่จะออก symlink ทั้งหมดหรือไม่
13 files  symlink  tar  wildcards 

2
ฉันจะรันคำสั่งบนหลายไฟล์ได้อย่างไร
นี่เป็นพื้นฐานที่ค่อนข้างฉันมีโฟลเดอร์ที่มีโฟลเดอร์ย่อยหลายไฟล์ของ JS และฉันต้องการเรียกใช้คอมไพเลอร์ Clojure ของ Google ในไฟล์ทั้งหมดในโฟลเดอร์เหล่านั้น คำสั่งในการประมวลผลไฟล์เดียวมีดังนี้: java -jar compiler.jar --js filename.js --js_output_file newfilename.js ฉันจะแก้ไขสิ่งนี้ให้ทำงานกับทุกไฟล์ JS ในโครงสร้างไดเรกทอรีของฉันได้อย่างไร

3
เป็นไปได้ไหมที่จะเปลี่ยนลำดับของก้อนกลม?
ฉันกำลังพยายามแสดงข้อความทั้งหมดจากข้อความ syslog ตามลำดับเวลาโดยทำสิ่งต่อไปนี้ grep squiggle /var/log/messages* น่าเสียดายที่รูปแบบ glob ตรงกับไฟล์ที่ใช้งานในปัจจุบันก่อน เช่น. /var/log/messages /var/log/messages-20120220 /var/log/messages-20120227 /var/log/messages-20120305 /var/log/messages-20120312 ซึ่งหมายความว่าข้อความล่าสุดจะปรากฏขึ้นก่อนตามด้วยข้อความประวัติศาสตร์ตามลำดับเวลา เป็นไปได้หรือไม่ที่จะปรับพฤติกรรมรูปแบบแบบกลมเพื่อทำการจับคู่ที่ว่างเปล่า (เช่นเพิ่งmessages) ปรากฏที่ส่วนท้ายของรายการหรือไม่ หากไม่เป็นเช่นนั้นจะเป็นวิธีที่ดีในการแก้ไขปัญหานี้อย่างไร
12 bash  wildcards 

5
การตั้งค่าใน bash สำหรับ globbing คืออะไรเพื่อควบคุมว่า * ตรงกับไฟล์ dot หรือไม่
ฉันประหลาดใจเมื่อเร็ว ๆ นี้เมื่อฉันทำสิ่งที่ชอบ mv ./* ../somedirectory และพบว่าไฟล์เช่น.gitignoreนั้นไม่ได้ถูกย้าย ฉันทำงานส่วนใหญ่ของฉันใน zsh บน OS X และสิ่งนี้ทำให้ฉันประหลาดใจในการทุบตี CentOS ฉันพยายามทุบตีใน OS X และพบพฤติกรรมเดียวกัน: *ไม่ตรงกับไฟล์ dot ดูเหมือนว่าฉันจะไม่พึงประสงค์มาก แต่ดูเหมือนว่ามันเป็นค่าเริ่มต้นของ bash (อาจเป็นค่าเริ่มต้น zsh ด้วยสำหรับทุกสิ่งที่ฉันจำได้ แต่ฉันอาจเปลี่ยนไปเมื่อหลายปีก่อนใน. zshrc ของฉันและลืมว่ามันใช้งานได้แตกต่างกันไป) ฉันจะกำหนดค่า bash ให้ทำงานตามที่คาดไว้ได้อย่างไร: สำหรับ * เพื่อให้ตรงกับไฟล์ทั้งหมดและไม่ละเว้นไฟล์ dot ในกรณีที่ไม่ชัดเจนนี่คือวิธีการทำซ้ำ cd /tmp mkdir {t,d}est touch test/{.,}{1,2,3,4,5,6,7} ls -hal test mv test/* dest ls …
12 bash  wildcards 

4
ค้นหาไฟล์ที่ไม่อยู่ใน. gitignore
ฉันมีคำสั่ง find ที่แสดงไฟล์ในโครงการของฉัน: find . -type f -not -path './node_modules*' -a -not -path '*.git*' \ -a -not -path './coverage*' -a -not -path './bower_components*' \ -a -not -name '*~' ฉันจะกรองไฟล์ได้อย่างไรจึงไม่แสดงไฟล์ที่อยู่ใน. gitignore ฉันคิดว่าฉันใช้: while read file; do grep $file .gitignore > /dev/null && echo $file; done แต่ไฟล์. gitignore สามารถมีรูปแบบ glob (เช่นกันมันจะไม่ทำงานกับพา ธ …
12 grep  find  wildcards  git 

4
แปลง glob เป็น `find`
ฉันได้อีกครั้งและอีกครั้งมีปัญหานี้: ฉันมี glob ว่าการแข่งขันว่าไฟล์ที่ถูกต้อง Command line too longแต่สาเหตุ ทุกครั้งที่ฉันแปลงเป็นชุดค่าผสมบางอย่างfindและใช้grepงานได้กับสถานการณ์เฉพาะ แต่ไม่เทียบเท่า 100% ตัวอย่างเช่น: ./foo*bar/quux[A-Z]{.bak,}/pic[0-9][0-9][0-9][0-9]?.jpg มีเครื่องมือสำหรับแปลง globs เป็นfindนิพจน์ที่ฉันไม่ทราบหรือไม่? หรือมีตัวเลือกสำหรับfindจับคู่กลมโดยไม่ต้องจับคู่กลมเดียวกันในส่วนย่อย (เช่นfoo/*.jpgไม่อนุญาตให้จับคู่bar/foo/*.jpg)?
11 find  wildcards 

2
มีสูงสุดในการขยายชื่อไฟล์ทุบตี (globbing) และถ้าเป็นเช่นนั้นมันคืออะไร?
มีสูงสุดในการขยายชื่อไฟล์ทุบตี (globbing) และถ้าเป็นเช่นนั้นมันคืออะไร? ดูglobbingใน tldp.org สมมติว่าฉันต้องการเรียกใช้คำสั่งกับชุดย่อยของไฟล์: grep -e bar foo* rm -f bar* มีข้อ จำกัด ว่าจะขยายไฟล์ไปยังจำนวนเท่าใดและถ้าเป็นเช่นนั้นจะเป็นอย่างไร ฉันไม่ได้มองหาวิธีอื่นในการดำเนินการเหล่านั้น (เช่นโดยใช้find)

3
ประวัติของทุบตี Bash
มีเหตุผลทางประวัติศาสตร์หรือไม่ทำไม Bash "globbing" และการแสดงออกปกติไม่เหมือนกัน? ตัวอย่างเช่นฉันเชื่อว่าใน Bash [1-2]*ตรงกับสิ่งที่เริ่มต้นด้วย 1 หรือ 2 ตามด้วยสิ่งอื่นในขณะที่นิพจน์ทั่วไป[1-2]*จะจับคู่เฉพาะลำดับที่ 1 และ 2 การเขียนสคริปต์ Bash และ REGEX ของฉันนั้นค่อนข้างอ่อนแอและฉันพบปัญหาที่เกี่ยวข้องกับความแตกต่างเหล่านี้เป็นประจำซึ่งทำให้ฉันสงสัยว่าทำไมพวกเขาถึงแตกต่างกัน

1
ความสำคัญของ dot ในคำสั่ง bash คืออะไรและแตกต่างจากเครื่องหมายดอกจันอย่างไร
ฉันพยายามที่จะเข้าใจความสำคัญของจุดในการทุบตีและวิธีการที่แตกต่างจากดอกจัน ใครบางคนช่วยอธิบายรายละเอียดได้ไหม? ตัวอย่างเช่นอะไรคือความแตกต่างระหว่างcp -ar /foo/. /foo2/และcp -pr /foo/* /foo2/

2
วิธีการแสดงเฉพาะขนาดไฟล์ทั้งหมดของส่วนขยายเฉพาะโดยคำสั่ง `du`
ฉันมีไฟล์ PDF และไฟล์ html หลายร้อยรายการในไดเรกทอรี และฉันต้องการทราบขนาดไฟล์ PDF ทั้งหมด โดยคำสั่งdu -ch /var/fooฉันสามารถดูขนาดไฟล์ทั้งหมด แต่ฉันต้องการเพียงบรรทัดสุดท้ายคือขนาดรวม หากไดเรกทอรีมีเฉพาะไฟล์ PDF ฉันสามารถใช้-sตัวเลือกได้ แต่ตัวเลือกนี้ไม่สามารถใช้ได้ในเวลานี้ ฉันจะได้รับขนาดไฟล์เฉพาะบางประเภทได้อย่างไร

10
วิธีที่ดีที่สุดในการนับจำนวนไฟล์ในไดเรกทอรีคืออะไร
หากการวิเคราะห์เอาต์พุตlsเป็นอันตรายเพราะสามารถแยกอักขระที่ขี้ขลาด (ช่องว่าง\n, ... ) ออกได้วิธีที่ดีที่สุดที่จะทราบจำนวนไฟล์ในไดเรกทอรีคืออะไร ฉันมักจะพึ่งพาfindเพื่อหลีกเลี่ยงการแยกวิเคราะห์นี้ แต่ในทำนองเดียวกันfind mydir | wc -lจะทำลายด้วยเหตุผลเดียวกัน ตอนนี้ฉันกำลังทำงานกับ Solaris อยู่ แต่ฉันกำลังมองหาคำตอบที่พกพาสะดวกในทุกกรณีและเปลือกหอยที่แตกต่างกันมากที่สุด

1
มีข้อได้เปรียบอะไรบ้างในการระบุ './' ใน a for for loop โดยใช้ glob?
ผมก็รู้สึกว่ามันอาจจะปลอดภัยในการใช้เมื่อค้นหาไฟล์ที่ลงท้ายด้วย./*.fastq .fastqยกตัวอย่างเช่นจะป้องกันไม่ให้จับไฟล์./ .fastqเห็นได้ชัดว่ามันผิดอย่างที่แสดงในตัวอย่างด้านล่าง: TMP_DIR=$(mktemp --directory) mkdir -p ${TMP_DIR} (cd ${TMP_DIR} touch {a,b,c,}.fastq ls -a echo "" echo "# match all:" for f in *.fastq ; do echo "${f}" done echo "" echo "# with ./:" for f in ./*.fastq ; do echo "${f}" done ) rm -rf ${TMP_DIR} . .. …
10 bash  shell  wildcards 

2
พฤติกรรมที่แปลกประหลาดของ TR ใช้ช่วง
ฉันมีเซิร์ฟเวอร์หนึ่งที่แสดงพฤติกรรมแปลก ๆ เมื่อใช้ tr นี่คือตัวอย่างจากเซิร์ฟเวอร์ที่ใช้งานได้: -bash-3.2$ echo "abcdefghijklmnopqrstuvwxyz1234567890"|tr -d [a-z] 1234567890 -bash-3.2$ นั่นทำให้รู้สึกที่สมบูรณ์แบบสำหรับฉัน อย่างไรก็ตามสิ่งนี้มาจากเซิร์ฟเวอร์ 'พิเศษ': [root@host~]# echo "abcdefghijklmnopqrstuvwxyz1234567890"|tr -d [a-z] abcdefghijklmnpqrstuvwxyz1234567890 อย่างที่คุณเห็นการลบอักขระตัวพิมพ์เล็กทั้งหมดล้มเหลว แต่มันได้ลบตัวอักษร 'o' ส่วนที่น่าสนใจคือสองตัวอย่างต่อไปนี้ซึ่งไม่สมเหตุสมผลกับฉันเลย: [root@host~]# echo "abcdefghijklmnopqrstuvwxyz1234567890"|tr -d [a-n] opqrstuvwxyz1234567890 [root@host~]# echo "abcdefghijklmnopqrstuvwxyz1234567890"|tr -d [a-o] abcdefghijklmnpqrstuvwxyz1234567890 [root@host~]# (อีกครั้งเครื่องหมาย 'o' จะถูกลบในตัวอย่างสุดท้าย) ไม่มีใครมีความคิดอะไรเกิดขึ้นที่นี่? ฉันไม่สามารถทำซ้ำในกล่อง linux อื่น ๆ ที่ฉันใช้

3
พฤติกรรมที่ไม่คาดหมายกับ echo [[: หลัก:]]
ฉันต้องการถาม: ทำไมecho {1,2,3}ขยายไป 1 2 3 ซึ่งเป็นพฤติกรรมที่คาดหวังในขณะที่echo [[:digit:]]ผลตอบแทน[[:digit:]]ในขณะที่ผมคาดว่ามันจะพิมพ์ตัวเลขทั้งหมดจาก0การ9?
10 shell  wildcards 

5
ความไวตัวพิมพ์เล็กในวงกลมแบบเหลี่ยมยึด
โดยปกติทุบตีทุบตีเป็นกรณี ๆ ไป: $ echo c* casefix.pike cdless chalices.py charconv.py chocolate.pike circum.py clip.pike cpustats.pike crop.pike cwk2txt.py $ echo C* CarePackage.md ChocRippleCake.md Clips การใช้วงเล็บเหลี่ยมดูเหมือนจะไม่เปลี่ยนแปลงสิ่งนี้: $ echo [c]* casefix.pike cdless chalices.py charconv.py chocolate.pike circum.py clip.pike cpustats.pike crop.pike cwk2txt.py $ echo [C]* CarePackage.md ChocRippleCake.md Clips มันยังคงไม่เปลี่ยนถ้าใช้ยัติภังค์: $ echo [c-c]* casefix.pike cdless chalices.py charconv.py …
10 bash  shell  wildcards  locale 

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