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

การจัดการไฟล์: การคัดลอกการเปลี่ยนชื่อการค้นหาการวิเคราะห์การเก็บถาวรและอื่น ๆ สำหรับการใช้งานกับข้อความในไฟล์ดู / การประมวลผลข้อความ สำหรับคำถามเกี่ยวกับตัวจัดการไฟล์ของ Files (ชื่อเดิม Nautilus) ให้ดู / nautilus

2
คำอธิบายของคนธรรมดาสำหรับ“ ทุกอย่างเป็นไฟล์” - อะไรคือสิ่งที่แตกต่างจาก Windows
ฉันรู้ว่า "ทุกอย่างเป็นไฟล์" หมายความว่าแม้กระทั่งอุปกรณ์ที่มีชื่อไฟล์และพา ธ ในระบบ Unix และ Unix-like และสิ่งนี้ทำให้เครื่องมือทั่วไปสามารถใช้กับทรัพยากรที่หลากหลายโดยไม่คำนึงถึงลักษณะของพวกเขา แต่ฉันไม่สามารถเปรียบเทียบได้กับ Windows ซึ่งเป็นระบบปฏิบัติการอื่นที่ฉันทำงานด้วย ฉันได้อ่านบทความบางอย่างเกี่ยวกับแนวคิด แต่ฉันคิดว่าพวกเขาค่อนข้างลำบากที่จะเข้าใจผู้ที่ไม่ใช่นักพัฒนา คำอธิบายของคนธรรมดาคือสิ่งที่ผู้คนต้องการ! ตัวอย่างเช่นเมื่อฉันต้องการคัดลอกไฟล์ไปยังการ์ด CF ที่ติดกับเครื่องอ่านการ์ดฉันจะใช้สิ่งที่ชอบ zcat name_of_file > /dev/sdb ใน Windows ฉันคิดว่าเครื่องอ่านการ์ดจะปรากฏเป็นไดรเวอร์และเราจะทำสิ่งที่คล้ายกันฉันคิดว่า ดังนั้นปรัชญา "ทุกอย่างเป็นไฟล์" สร้างความแตกต่างได้อย่างไรที่นี่

4
การอ่านบรรทัดจากไฟล์ที่มี bash: for vs. while
ฉันพยายามอ่านไฟล์ข้อความและทำบางอย่างกับแต่ละบรรทัดโดยใช้ bash script ดังนั้นฉันมีรายการที่มีลักษณะเช่นนี้: server1 server2 server3 server4 ฉันคิดว่าฉันสามารถวนรอบนี้โดยใช้ขณะที่ห่วงเช่น: while read server; do ssh $server "uname -a" done < /home/kenny/list_of_servers.txt ขณะที่ลูปหยุดหลังจากเรียกใช้ 1 ครั้งดังนั้นจึงรันuname -aบนเซิร์ฟเวอร์1 เท่านั้น อย่างไรก็ตามด้วย for for loop ที่ใช้ cat มันทำงานได้ดี: for server in $(cat /home/kenny/list_of_servers.txt) ; do ssh $server "uname -a" done ยิ่งทำให้งงงันกับฉันก็คือสิ่งนี้ยังใช้งานได้: while read server; do echo …

5
วิธีที่ถูกต้องในการขอฟีเจอร์ใน GNU Linux คืออะไร?
ฉันกำลังพยายามส่งรายงานข้อผิดพลาดสำหรับไฟล์แอป / usr / bin / ไฟล์ แต่ให้คำปรึกษากับชายคนนั้นและส่งอีเมล BUGS กรุณารายงานข้อผิดพลาดและส่งแพตช์ไปที่ตัวติดตามบั๊กที่http://bugs.gw.com/ หรือรายชื่อผู้รับจดหมายที่⟨file@mx.gw.com⟩ (ไปที่ http://mx.gw.com/mailman/ listinfo / ไฟล์ก่อนที่จะสมัคร) ทำให้ฉันค้นหาที่อยู่อีเมลไม่มีอยู่ มีวิธีอื่นในการสื่อสารกับชุมชนหรือไม่ หวังว่านี่คำถามนี้เป็นส่วนหนึ่งของมัน :) ดังนั้นนี่คืออีเมลของฉัน: คุณสมบัติที่เป็นไปได้ล้มเหลว: --extensionตัวเลือกดูเหมือนจะไม่ส่งออกอะไร $ file --extension "ab.gif" ab.gif: ??? มันจะมีประโยชน์ที่จะสามารถใช้เอาต์พุตของสิ่งนี้เพื่อเปลี่ยนชื่อไฟล์เป็นนามสกุลที่ถูกต้องได้อย่างง่ายดาย บางอย่างเช่นไฟล์--likely_extensionจะแสดงเฉพาะส่วนขยายที่ตรวจพบหรือข้อผิดพลาดหากการตรวจจับต่ำเกินไป เช่นนี้: $ file --likely_extension "ab.gif" gif ดีกว่าแม้ว่าจะเป็น--correct_extensionตัวเลือก: $ file --correct_extension "ab.jpg" $ ls ab.gif Tyvm สำหรับแอพนี้ :)

10
มีวิธีที่สะดวกในการจัดประเภทไฟล์เป็น "binary" หรือ "text" หรือไม่?
ยูทิลิตี้ Unix มาตรฐานต้องการgrepและdiffใช้ฮิวริสติกบางอย่างเพื่อจัดประเภทไฟล์เป็น "text" หรือ "binary" ( grepเอาต์พุตของEg อาจมีบรรทัดที่เหมือนBinary file frobozz matchesกัน) มีการทดสอบที่สะดวกที่สามารถนำไปใช้ในzshสคริปต์เพื่อดำเนินการจัดหมวดหมู่ "ข้อความ / ไบนารี" ที่คล้ายกัน? (นอกเหนือจากที่ต้องการgrep '' somefile | grep -q Binary) (ฉันตระหนักว่าการทดสอบใด ๆ เช่นนั้นจำเป็นต้องเป็นแบบฮิวริสติกและไม่สมบูรณ์ดังนั้น)
35 files  text 

3
ฉันจะทำให้ไฟล์ไม่สามารถแก้ไขได้อย่างไร
ในขณะที่เข้าสู่ระบบฉันสามารถทำสิ่งต่อไปนี้: mkdir foo touch foo/bar chmod 400 foo/bar chmod 500 foo จากนั้นฉันสามารถเปิดเป็นกลุ่ม (ไม่เป็นroot) แก้ไขbarบังคับให้เขียนด้วยw!และไฟล์จะถูกแก้ไข ฉันจะทำให้ระบบปฏิบัติการไม่อนุญาตให้แก้ไขไฟล์ได้อย่างไร? อัพเดท 02 มี.ค. 2560 chmod 500 foo เป็นปลาเฮอริ่งแดง: สิทธิ์ในการเขียนในไดเรกทอรีไม่มีส่วนเกี่ยวข้องกับความสามารถในการปรับเปลี่ยนเนื้อหาของไฟล์ - เฉพาะความสามารถในการสร้างและลบไฟล์ chmod 400 foo/barในความเป็นจริงจะป้องกันเนื้อหาของไฟล์จากการเปลี่ยนแปลง แต่ไม่ได้ป้องกันการอนุญาตของไฟล์จากการเปลี่ยนแปลง - เจ้าของไฟล์สามารถเปลี่ยนแปลงการอนุญาตของไฟล์ได้ตลอดเวลา (สมมติว่าพวกเขาสามารถเข้าถึงไฟล์ได้เช่นเรียกใช้งานการอนุญาตในไดเรกทอรีบรรพบุรุษทั้งหมด) ในความเป็นจริง strace (1) แสดงให้เห็นว่านี่คือสิ่งที่กลุ่ม (7.4.576 Debian Jessie) กำลังทำอยู่ - vim เรียก chmod (2) เพื่อเพิ่มสิทธิ์การเขียนสำหรับเจ้าของไฟล์ชั่วคราวแก้ไขไฟล์แล้วเรียก chmod ( 2) …

3
ฉันจะใช้ wget กับรายการ URL และไฟล์เอาต์พุตที่เกี่ยวข้องได้อย่างไร
สมมติว่าlist_of_urlsมีลักษณะเช่นนี้: http://www.url1.com/some.txt http://www.url2.com/video.mp4 ฉันรู้วิธีใช้สิ่งนั้นด้วย: wget -i list_of_urls แต่ถ้าฉันlist_of_urlsมีสิ่งนี้และพวกเขาทั้งหมดกลับไฟล์ที่เหมาะสมเช่น PDF หรือวิดีโอ: http://www.url1.com/app?q=123&gibb=erish&gar=ble http://www.url2.com/app?q=111&wha=tcha&mac=allit สำหรับไฟล์เดียวฉันสามารถทำได้: wget -O some.txt "http://www.url1.com/app?q=123&gibb=erish&gar=ble" ฉันจะใช้wgetเพื่อดาวน์โหลดรายการ URL นั้นและบันทึกข้อมูลที่ส่งคืนไปยังไฟล์ในเครื่องที่เหมาะสมได้อย่างไร
35 files  wget  download  links 

5
เป็นไปได้หรือไม่ที่จะรู้ว่าโปรแกรมหรือสคริปต์ใดที่สร้างไฟล์ที่กำหนด?
ไฟล์สามไฟล์ปรากฏในไดเรกทอรีบ้านของฉันซึ่งเรียกว่า "client_state.xml", "lockfile" และ "time_stats_log" สองอันสุดท้ายนั้นว่างเปล่า ฉันสงสัยว่าพวกเขาไปถึงที่นั่นได้อย่างไร ไม่ใช่ครั้งแรกที่มันเกิดขึ้น แต่ครั้งสุดท้ายคือเมื่อหลายสัปดาห์ก่อน ฉันลบไฟล์และไม่มีอะไรเสียหายหรือบ่น stat $filenameฉันยังไม่ได้สามารถที่จะคิดว่าสิ่งที่ผมทำในขณะที่รายงานโดย มีวิธีใดที่ฉันจะทราบได้ว่าพวกเขามาจากไหน อีกวิธีหนึ่งมีวิธีการตรวจสอบไดเรกทอรีบ้าน (แต่ไม่ใช่ไดเรกทอรีย่อย) สำหรับการสร้างไฟล์หรือไม่
35 files  monitoring 

5
mv -f คืออะไร
คู่มือ GNU coreutils สำหรับmvพูดว่า: -f --force Do not prompt the user before removing a destination file. อย่างไรก็ตามดูเหมือนว่านี่จะเป็นพฤติกรรมเริ่มต้นสำหรับmvดังนั้น-fตัวเลือกที่ดูเหมือนจะฟุ่มเฟือย เช่นใน GNU Bash เวอร์ชั่น 4.3.11: $ ls -l total 0 $ touch 1 2; mv -f 1 2; ls 2 $ touch 1 2; mv 1 2; ls 2 ดูเหมือนว่าไม่น่าจะเป็นความตั้งใจของ-fธงคือการแทนที่alias mv="mv -i"เพราะมีหลายวิธีมาตรฐานของการเอาชนะนามแฝง (เช่นการใช้\mv) …
34 files  history  mv 

6
ฉันจะดำเนินการ "คัดลอกหากมีการเปลี่ยนแปลง" ได้อย่างไร?
ฉันต้องการคัดลอกชุดไฟล์จากไดเรกทอรี A ไปยังไดเรกทอรี B โดยมีข้อแม้ว่าหากไฟล์ในไดเรกทอรี A เหมือนกับไฟล์ในไดเรกทอรี B ไฟล์นั้นไม่ควรคัดลอก (และเวลาในการปรับเปลี่ยนไม่ควรเป็น ปรับปรุง) มีวิธีที่จะทำเช่นนั้นกับเครื่องมือที่มีอยู่โดยไม่ต้องเขียนสคริปต์ของตัวเองเพื่อทำมันได้หรือไม่ หากต้องการอธิบายรายละเอียดเล็กน้อยเกี่ยวกับกรณีการใช้งานของฉัน: ฉันกำลังสร้าง.cไฟล์จำนวนมากในไดเรกทอรีชั่วคราว (โดยวิธีการที่จะสร้างไฟล์ทั้งหมดโดยไม่มีเงื่อนไข) และเมื่อฉันสร้างไฟล์ขึ้นมาใหม่ฉันต้องการคัดลอกเท่านั้น รายการที่เปลี่ยนไปเป็นไดเรกทอรีต้นทางจริงปล่อยให้รายการที่ไม่มีการเปลี่ยนแปลง (ด้วยเวลาการสร้างเก่า) เพื่อที่makeจะรู้ว่าไม่จำเป็นต้องคอมไพล์ใหม่ (ไม่ใช่ไฟล์ที่สร้างขึ้นทั้งหมดเป็น.cไฟล์ดังนั้นฉันต้องทำการเปรียบเทียบแบบไบนารีมากกว่าการเปรียบเทียบข้อความ) (ตามที่ทราบ: นี่เป็นคำถามที่เกิดขึ้นฉันถามบนhttps://stackoverflow.com/questions/8981552/speeding-up-file-comparions-with-cmp-on-cygwin/8981552/speeding-up-file-comparions-with-cmp-on-cygwin/8981762#8981762ซึ่งฉันพยายามอยู่ เพื่อเพิ่มความเร็วให้กับไฟล์สคริปต์ที่ฉันใช้ในการดำเนินการนี้ แต่มันเกิดขึ้นกับฉันว่าฉันควรถามว่ามีวิธีที่ดีกว่าในการทำสิ่งนี้มากกว่าการเขียนสคริปต์ของตัวเองโดยเฉพาะอย่างยิ่งตั้งแต่วิธีง่ายๆในการทำเชลล์ สคริปต์จะเรียกใช้บางอย่างเช่นcmpไฟล์ทุกคู่และการเริ่มต้นกระบวนการทั้งหมดใช้เวลานานเกินไป)

4
การให้สิทธิ์การเขียนแก่กลุ่มในโฟลเดอร์
ฉันจะอนุญาตให้เขียนเป็น 1 กลุ่มได้อย่างไร ฉันมีผู้ใช้ 2 คน ( alexและben) alexเป็นสมาชิกของกลุ่มและของกลุ่มalex เป็นสมาชิกของกลุ่มและของกลุ่มconsult benbenconsult ฉันต้องการที่จะให้สิทธิ์ในการเขียนอ่านทั้งสองalexและที่โฟลเดอร์benconsult_documents ถ้าฉันทำalexเจ้าของไดเรกทอรีconsult_documentsและฉันให้775เข้าถึงไดเรกทอรีconsult_documents, benและalexจะสามารถเข้าถึงโฟลเดอร์ที่ฉันคิดว่า แต่นี่จะอนุญาตให้benเข้าถึงalexโฟลเดอร์อื่น ๆ ด้วยหรือไม่ หากผู้ใช้อยู่ในสองกลุ่มนั่นหมายความว่าสมาชิกทั้งหมดจากทั้งสองกลุ่มจะได้รับการอนุญาตแบบเดียวกันในทุกโฟลเดอร์หรือไม่?

4
เมื่อสร้างไฟล์ว่างเหตุใดจึงอาจต้องการ 'ไฟล์สัมผัส' มากกว่า ': >> ไฟล์'
ไม่เคยรู้เลยว่าคุณสามารถทำได้จนถึงตอนนี้: : >> file ดูเหมือนว่าจะมีฟังก์ชันคล้ายกับ: touch file มีเหตุผลที่ทรัพยากรส่วนใหญ่ดูเหมือนจะชอบมากกว่าการสัมผัสเปลือกนี้ในตัว?
33 shell  files  touch 

3
รายการของไฟล์ที่แก้ไขล่าสุด
ฉันจะดูรายการไฟล์ทั้งหมดที่ถูกแก้ไขได้อย่างไรพูดเมื่อ 3 เดือนที่แล้ว ฉันตรวจสอบคำถามนี้แต่ฉันไม่สามารถนำไปใช้กับสถานการณ์ของฉันได้ ฉันลองตอนนี้ดูเหมือนว่าจะทำงานได้ แต่ฉันรู้ว่าควรมีวิธีที่ดีกว่าในการใช้การค้นหา ls -ltR | grep -v '2011-05' | grep -v '2011-06' | grep -v '2011-07' | grep -v '2011-08
33 files  find  ls  date 

4
ลบ n ไบต์แรกของไฟล์
ฉันมีปัญหามากและวิธีแก้ไขทั้งหมดที่ฉันจินตนาการได้นั้นซับซ้อน จากประสบการณ์ UNIX / Linux ของฉันต้องมีวิธีที่ง่าย ฉันต้องการที่จะลบ 31 /foo/ไบต์แรกของแต่ละแฟ้มใน แต่ละไฟล์มีความยาวเพียงพอ ฉันแน่ใจว่าใครบางคนจะส่งมอบวิธีแก้ปัญหาที่ง่ายอย่างเหลือเชื่อให้กับฉันฉันไม่สามารถจินตนาการได้ อาจจะตกใจ

7
แนวคิดของการสร้างไฟล์ที่มีศูนย์ไบต์ใน Linux คืออะไร?
ถ้าฉันทำต่อไปนี้: touch /tmp/test จากนั้นดำเนินการ ls -la /tmp/ ฉันสามารถดูtestไฟล์ที่มี0 ไบต์ในไดเรกทอรี แต่ระบบปฏิบัติการจัดการกับแนวคิดของ0 Bytesอย่างไร ถ้าฉันใส่มันในแง่คนธรรมดา: 0 ไบต์ไม่มีหน่วยความจำเลยไม่มีสิ่งใดถูกสร้างขึ้น การสร้างไฟล์ต้องหรือควรอย่างน้อยต้องใช้หน่วยความจำบางอย่างใช่มั้ย?

5
แสดงรายการไฟล์ที่เรียงตามจำนวนบรรทัดที่มี
ฉันจะแสดงรายการจำนวนบรรทัดในไฟล์/group/book/four/wordเรียงลำดับตามจำนวนบรรทัดที่มีได้อย่างไร ls -l คำสั่งรายการพวกเขาลง แต่ไม่ได้จัดเรียงพวกเขา
32 bash  shell  files  wc 

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