แปลงไดเรกทอรีเป็นไฟล์หรือไฟล์เป็นไดเรกทอรี


15

testผมอยากจะสร้างไฟล์ชื่อ บังเอิญผมทำงานแทนmkdir testtouch test

เป็นไปได้ไหมที่จะแปลงtestสารบบในไฟล์ชื่อtest?

สิ่งที่เกี่ยวกับการแปลงไฟล์ชื่อtestเป็นไดเรกทอรีที่มีชื่อเดียวกัน?


5
rm -f test && touch testยกเว้นสิ่งนี้ฉันไม่รู้จริงๆ
Kiwy

@ Kiwy ใช่ แต่ฉันจินตนาการถึงคำสั่งในตัวที่ออกแบบมาเพื่อทำงานนี้
IonicăBizău

คำตอบ:


12

สิ่งนี้เป็นไปไม่ได้สำหรับ Unix หรือ Linux ใด ๆ ที่ฉันเคยสัมผัส

ภายใต้ Unixes ที่เก่ากว่าไดเรกทอรีคือไฟล์ที่ทำเครื่องหมายเป็นพิเศษ แต่ยังคงไฟล์ คุณเคยสามารถอ่านไดเรกทอรีด้วยcatภายใต้ SunOS เป็นต้น ระบบไฟล์ที่ทันสมัยจำนวนมากอาจมีไดเรกทอรีเป็นต้นไม้ B + หรือโครงสร้างข้อมูลบนดิสก์อื่น ๆ ดังนั้นการเปลี่ยนไฟล์ให้เป็นไดเรกทอรีหรือในทางกลับกันจะต้องมีการลบและการสร้างใหม่ด้วยชื่อเดียวกัน


1
น่าสนใจ หากไม่มีใครมาพร้อมทางออกฉันจะทำเครื่องหมายคำตอบนี้ :-)
IonicăBizău

5

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

ไฟล์และไดเรกทอรีให้บริการฟังก์ชั่นที่แตกต่างอย่างสิ้นเชิง แม้ว่าไดเรกทอรีจะเป็นไฟล์ในระบบ * nix แต่จะใช้กับ internals ของระบบเท่านั้นและไม่ใช่กับสิ่งที่คุณผู้ใช้เห็น ดังนั้นการแปลงไฟล์เป็นไดเรกทอรีหรือในทางกลับกันมักจะเกี่ยวข้องกับการลบไฟล์และสร้างไดเรกทอรี สิ่งที่ดีที่สุดที่คุณสามารถคาดหวังได้ก็คือจะใช้ไอโหนดเดียวกัน แต่อีกครั้งไม่ใช่จุดที่มาก


การพูดว่าไม่มีความคิดเห็นของคุณไม่ใช่ความจริงทางเทคนิค
Sridhar Sarnobat

@ user7000 คุณจะทำอย่างไรกับเนื้อหาของไดเรกทอรีเมื่อคุณ "แปลง" เป็นไฟล์
terdon

ระบบไฟล์เก็บข้อมูลในโครงสร้างแบบต้นไม้ ในวิทยาการคอมพิวเตอร์โหนดต้นไม้ที่เป็นโหนดใบไม้อาจกลายเป็นโหนดภายในเมื่อคุณเพิ่มเด็ก ๆ ลงไป และไม่ฉันจะไม่ใช้ฐานข้อมูลเมื่อระบบไฟล์ไม่เพียงพอ
Sridhar Sarnobat

2

สร้างฟังก์ชั่นเพื่อทำสิ่งที่คุณต้องการ ( bashหรือ Bourne / POSIX อื่น ๆ เช่นเชลล์ที่สมมติ)

$ dir2file() { rmdir -- "$1" && touch -- "$1";}
$ mkdir adir
$ dir2file adir
$ ls -l adir
-rw-r--r-- 1 xtian xtian 0 2014-03-04 14:59 adir
$ 

ฉันจงใจใช้rmdirซึ่งจะล้มเหลวหากadirไม่ได้เป็นไดเรกทอรีหรือไม่ว่างเปล่า (ไม่มี-fการบังคับ) touchจะทำงานก็ต่อเมื่อrmdirสำเร็จ

คุณสามารถใส่นิยามฟังก์ชันในไฟล์การปรับแต่งเชลล์ของคุณ ( .bashrcสำหรับbash)


@Stephane Chazelas --ทำหน้าที่อะไร?
X Tian

2
--จุดสิ้นสุดของธงดังนั้นrmdirและรู้อะไรที่ผ่านมามันเป็นชื่อไฟล์แม้ว่าจะเริ่มต้นด้วยtouch -
Kevin

2

สำหรับผู้ที่สงสัยว่าทำไมคุณต้องการทำเช่นนี้ทำตามหัวข้อนี้:

https://community.linksys.com/t5/Wireless-Routers/Media-files-changing-to-folder-types/td-p/504192/highlight/true

เห็นได้ชัดว่าบั๊กในเฟิร์มแวร์พลิกบิตในรายการไดเรกทอรีสำหรับไฟล์ทำให้ระบบปฏิบัติการคิดว่าเป็นโฟลเดอร์แทนที่จะเป็นไฟล์

ในขณะที่ฉันไม่มีเราเตอร์ Linksys ที่เป็นปัญหามีบางอย่างเปลี่ยนไฟล์. jpg ทั้งหมดของฉันไปเป็นโฟลเดอร์ว่าง หากมีอีกทางที่จะพลิกบิต (หรืออะไรก็ตาม) ที่ระบุว่ารายการไดเรกทอรี NTFS เป็นโฟลเดอร์เทียบกับไฟล์ฉันต้องการทราบเกี่ยวกับมัน

หนึ่งในวิธีแก้ปัญหาในเธรดที่มีความยาว 2 ปีกล่าวว่าหากฮาร์ดไดรฟ์ที่มีโฟลเดอร์ที่ใช้เป็นไฟล์เชื่อมต่อกับ Mac ที่ใช้ระบบปฏิบัติการ OS / X Mac จะเห็นพวกเขาเป็นไฟล์อีกครั้งและพวกเขา สามารถคัดลอกไปยังโฟลเดอร์บน Mac ฉันไม่มี Mac ที่จะลองดูดังนั้นถ้าใครรู้วิธีพลิกบิต ...


1

ก่อนอื่นให้เข้าถึงเทอร์มินัลแล้วดำเนินการls -al fileโดยไฟล์เป็นไฟล์ที่คุณต้องการแปลงกลับไปเป็นโฟลเดอร์ ACTUAL หากมีไฟล์และไดเรกทอรีย่อยอยู่ในรายการนั่นหมายความว่า "ไฟล์" ของคุณเคยเป็นโฟลเดอร์ที่มีเนื้อหาจริงและคุณสามารถดำเนินการต่อไปได้:

ดำเนินการ:

sudo chmod 700 /

หรือ

sudo chmod 700 file

รีสตาร์ทระบบและเรียกคืนการเข้าถึงเทอร์มินัลและรัน:

sudo chmod 744 /

หรือ

sudo chmod 744 file

โปรดจำไว้ว่า: "ไฟล์" ควรถูกแทนที่ด้วยไฟล์ที่คุณต้องการแปลงกลับไปเป็นโฟลเดอร์ ACTUAL

นี่เป็นเพียงวิธีการหนึ่งในการแก้ไขปัญหานี้ แต่สร้างความผิดปกติเกี่ยวกับการอนุญาตซึ่งคุณสามารถใช้fsck -fเพื่อแก้ไข (ในขณะที่ยกเลิกการติดตั้งแน่นอน) หรือตั้งค่าการอนุญาตใหม่ด้วยตนเองตามต้องการ

อีกครั้งนี่เป็นเพียงวิธีที่พิสูจน์แล้วว่าหลีกเลี่ยงการลบไฟล์ที่เคยเป็นโฟลเดอร์ที่ไม่ว่างเปล่ามาก่อน


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