เหตุใดฉันจึงไม่มีโฟลเดอร์และไฟล์ที่มีชื่อเดียวกัน


21

ผมไม่เคยมีปัญหานี้มาก่อน packages/แต่ด้วยเหตุผลบางอย่างผมไม่สามารถเปลี่ยนชื่อโฟลเดอร์ของฉันไป

นี่คือโครงสร้าง:

root
  -  packages_old/
  -  packages

เมื่อฉันพยายามเปลี่ยนชื่อโฟลเดอร์ด้วย Thunar ฉันได้รับข้อความแสดงข้อผิดพลาดว่ามีไฟล์อยู่แล้ว เหมือนกับmv:

blender iso $ mv packages_old/ packages/
mv: accessing `packages/': Not a directory

เหตุใดฉันจึงไม่สามารถเปลี่ยนชื่อไฟล์และโฟลเดอร์ของฉันให้มีชื่อเดียวกันได้:

root
  -  packages/
  -  packages

ฉันสาบานที่ฉันเคยทำมาก่อน


19
หน่วยความจำของคุณอาจไม่เข้าใจผิดได้อย่างที่คุณคิด ในแพลตฟอร์ม unix "ทุกอย่างเป็นไฟล์" คุณไม่สามารถมีไฟล์และโฟลเดอร์ที่มีชื่อเดียวกันได้เนื่องจากไดเรกทอรีเป็นไฟล์ชนิดพิเศษ มันเกี่ยวข้องกับแบบดั้งเดิมส่วนขยายในไดเรกทอรีใน.d /etcสมมติว่าคุณทำls packagesหรือvim packages- ระบบจะทราบได้อย่างไรว่าคุณต้องการไดเรกทอรีหรือไฟล์?
jw013

2
คุณสามารถบอกเราได้ว่าระบบปฏิบัติการที่คุณใช้อยู่? เพราะคุณไม่สามารถมีไฟล์และไดเรกทอรีที่มีชื่อเดียวกันในส่วนของระบบปฏิบัติการฉันรู้
rahmu

2
@ j013 ทำไมคุณถึงตอบในความคิดเห็นและไม่ได้เขียนคำตอบ ?
andcoz

1
คุณไม่สามารถทำได้บน Windows เช่นกัน บนเครื่องที่ใช้ Windows 7 ของฉันพยายามทำเช่นนั้นให้เกิดข้อผิดพลาด:There is already a file with the same name as the folder name you specified. Specify a different name.
Chris Down

4
ใน Windows การตั้งค่าเริ่มต้นคือละเว้นส่วนขยายดังนั้นคุณอาจมีpackageไดเรกทอรีและpackage.txtไฟล์ในโฟลเดอร์เดียวกัน จาก Windows Explorer จะปรากฏว่าคุณมีรายการที่เรียกว่า "แพคเกจ" เมื่อจริง ๆ แล้วมันเป็นเพียงการซ่อนส่วนหนึ่งของชื่อไฟล์ของหนึ่ง
Arcege

คำตอบ:


35

ใน Unix เกือบทุกอย่างเป็นไฟล์ ไดเรกทอรีเป็นไฟล์ประเภทพิเศษที่จากมุมมองของผู้ใช้สามารถ "มี" ไฟล์อื่น ๆ

ข้อผิดพลาดNot a directoryเกิดขึ้นเนื่องจากไฟล์ที่มีอยู่ไม่ใช่ไดเรกทอรีและเนื่องจากไดเรกทอรีเป็นไฟล์ประเภทหนึ่งและไม่สามารถมีไฟล์ที่มีชื่อเหมือนกันสองไฟล์ในไดเรกทอรีเดียวจึงไม่สามารถดำเนินการได้


6
สำหรับปัญหาเกี่ยวกับหน่วยความจำของคุณอาจในอดีตไฟล์และไดเรกทอรีของคุณมีชื่อเหมือนกัน แต่มีตัวพิมพ์เล็กต่างกันเช่น "แพ็คเกจ" และ "แพ็คเกจ" ชื่อไฟล์เป็นแบบตรงตามตัวพิมพ์เล็ก - ใหญ่
noamtm

2

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

สำหรับ pseudocode ต่อไปนี้:

isDir('/path/to/same_file_and_folder_name')

ระบบปฏิบัติการควรตอบกลับจริงหรือเท็จ?


มันควรจะกลับ 'ทั้งสอง'
Anthon


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