ฉันจะลบไฟล์ที่มี แต่ระบบแจ้งว่าไม่มีได้อย่างไร
ฉันจะลบไฟล์ที่มี แต่ระบบแจ้งว่าไม่มีได้อย่างไร
คำตอบ:
ฉันรู้ว่านี่เก่า แต่ฉันมีปัญหาเช่นเดียวกับคุณเฉพาะกับโฟลเดอร์ไม่ใช่กับไฟล์ ไม่มีวิธีการใดที่แนะนำในที่นี้ได้ผล
ฉันจัดการเพื่อแก้ไขปัญหาโดยการสร้างโฟลเดอร์ในตำแหน่งเดียวกันและมีชื่อเดียวกับที่ฉันไม่สามารถลบได้ โฟลเดอร์ถูกสร้างขึ้นอย่างถูกต้องและ "แทนที่" โฟลเดอร์ที่ไม่มีอยู่ จากนั้นฉันก็ลบโฟลเดอร์ใหม่และปัญหาก็หายไป เรียบง่ายเหมือนที่
ผมมีปัญหาเดียวกัน. มันเป็นปัญหาในรายการดัชนีของพาร์ติชัน ฉันแก้ไขได้ด้วยการเริ่ม Windows ถ้าระบบของคุณเป็นแบบดูอัลบูตหรือใส่ซีดีสดของ Windows XP หรือ Windows 7 จากนั้นทำตามขั้นตอนต่อไปนี้:
cmd
คลิกขวา -> Run as administrator chkdsk /f/x D:
(โดยที่ D คืออักษรระบุไดรฟ์ของคุณ) ทำงาน 100%
คำเตือน:
debugfs
คำแนะนำเหล่านี้จะต้องมีหนึ่งในการใช้งาน พวกเขาสามารถทำให้ข้อมูลสูญหายสิ่งเหล่านี้ได้รับการปรับให้เข้ากับปัญหาดั้งเดิมและอาจหรืออาจไม่ถูกต้องสำหรับผู้เข้าชมในหน้านี้ การสูญเสียข้อมูลใด ๆ
fsck
ที่อาจจะไม่สามารถแก้ไขได้หรือกำเริบได้โดย
มันอาจจะเป็นไอโหนดที่หายไป โปรดเรียกใช้ls -li
เพื่อรับรายการหมายเลขไอโหนดจากนั้นคุณสามารถลองดัมพ์ไอโหนดที่อ้างถึงได้ ตัวอย่างเช่นหากคุณls -li
มีลักษณะดังต่อไปนี้:
rarkenin@ubuntu-alt-64-vbox-1:~$ ls -li
total 58672
4980758 -rwxr-xr-x 2 rarkenin rarkenin 4096 Sep 23 18:45 panorama.jpg
---SNIP---
ดังนั้นหมายเลขไอโหนดคือ 4980758 ดังแสดงในรายการเป็นคอลัมน์แรก
จากนั้นคุณสามารถลองดัมพ์ไอโหนด โปรดอ่านโพสต์ทั้งหมดก่อนที่จะทำอะไร
เริ่มจากdebugfs
รูท:
rarkenin@ubuntu-alt-64-vbox-1:~$ sudo debugfs
[sudo] password for rarkenin:
debugfs 1.42 (29-Nov-2011)
debugfs:
และให้คำสั่งopen /dev/sda1
ด้วยอุปกรณ์บล็อกที่ถูกต้องสำหรับพาร์ติชันของคุณ
จากนั้นให้คำสั่งเพื่อดัมพ์ไอโหนดที่คุณมีหมายเลขก่อนหน้านี้:
cat <4980758>
ใช้<
และ>
รอบ ๆ หมายเลขไอโหนด
หากอ่านข้อความสุ่มให้ปิดเทอร์มินัลแล้วเปิดอีกครั้ง เรียกใช้debugfs
อีกครั้งและให้open
คำสั่งอีกครั้ง
ตอนนี้คุณสามารถลองลบไฟล์ได้ สิ่งนี้อาจส่งผลให้ระบบไฟล์เสียหายอย่างรุนแรง
debugfs: rm [filename]
debugfs: unlink [filename]
debugfs: kill_file [filename]
debugfs: kill_file <inode>
โปรดทราบว่าสิ่งนี้สามารถทำได้แม้ว่าจะปรากฎไฟล์ที่ไม่เคยมี inode ลองคำสั่งทีละครั้งตามลำดับที่แสดงด้านบน ออกจาก debugfs และตรวจสอบว่ามีไฟล์อยู่หรือไม่ ถ้าไม่เริ่มใหม่อีกครั้ง แต่ทำตามคำแนะนำต่อไป
debugfs
มีไว้สำหรับประเภทระบบไฟล์ ext2, ext3 และ ext4 เท่านั้น
แสดงเทอร์มินัล .... ll | grep panorama
ให้เราและแสดงให้เราเห็นว่า; เพิ่มไปยังคำถามของคุณ ...
คำแนะนำของฉันคือการทำเป็นราก rm -f panorama.jpg
ในคนของฉันพบว่านี้:
-f, --force
ignore nonexistent files, never prompt
ก่อนเข้าสู่ระบบในฐานะ root ด้วย sudo -s
คุณสามารถลองทำrm -v <file>
และระวังเอาต์พุต verbose เพื่อดูว่าเกิดอะไรขึ้นขณะพยายามลบไฟล์ ตรวจสอบตัวเลือกสำหรับคำสั่งด้านล่าง
หากล้มเหลวคุณสามารถใช้ตัวเลือกบังคับได้เหมือนที่คนอื่นพูด คุณสามารถลองลบไดเรกทอรีทั้งหมดโดยบังคับให้ลบแบบเรียกซ้ำ:rm -rfv **full directory address here**
สรุป
rm [OPTION]... FILE...
รายละเอียด
rm removes each file. By default, it does not remove directories.
If a file is unwritable, the standard input is a tty, and the -f or
--force option is not given, rm prompts the user for whether to remove
the file. If the response is not affirmative, the file is skipped.
ตัวเลือก
Remove (unlink) the FILE(s).
-f, --force
ignore nonexistent files, never prompt
-i, --interactive
prompt before any removal
--no-preserve-root do not treat '/' specially (the default)
--preserve-root
fail to operate recursively on '/'
-r, -R, --recursive
remove directories and their contents recursively
-v, --verbose
explain what is being done
--help display this help and exit
--version
output version information and exit
By default, rm does not remove directories. Use the --recursive (-r or
-R) option to remove each listed directory, too, along with all of its
contents.
To remove a file whose name starts with a '-', for example '-foo', use
one of these commands:
rm -- -foo
rm ./-foo
Note that if you use rm to remove a file, it is usually possible to
recover the contents of that file. If you want more assurance that the
contents are truly unrecoverable, consider using shred.
มองที่ภาพหน้าจอของคุณฉันเห็นว่าคุณมีกลุ่มที่ตั้งค่าเป็นรูท ฉันลองใช้ chown แล้วดูว่ามันช่วยแก้ปัญหาได้ไหม
sudo chown -hR [username]:[username] /home/[username]
แทนที่ [ชื่อผู้ใช้] ด้วยชื่อผู้ใช้ของคุณ
คุณจะได้รับข้อผิดพลาดสองสามข้อ
การไม่พิมพ์อักขระในชื่อไฟล์อาจทำให้เกิดปัญหาเช่นพื้นที่ ลองใช้ตัวเลือกการโต้ตอบของ rm และพูดว่า 'Y' กับไฟล์ที่คุณต้องการลบ "
rm -i" * pan * "สังเกตการใช้ * s เพื่อจับคู่อักขระ (แม้ไม่ใช่ที่ไม่พิมพ์) ใด ๆ
อาจเป็น inode ได้ ถูกลบ แต่ไม่ใช่รายการไดเร็กทอรีลอง ls -i เพื่อดู inodes fsck ระบบไฟล์เพื่อแก้ไขปัญหาประเภทนี้
ลองด้วยวิธีนี้:
cd dir-to-delete
find ./ -exec rm -rf {} \;
ดังที่ ubfan1 กล่าวว่าการพิมพ์ตัวอักษรในชื่อไฟล์อาจทำให้เกิดปัญหาดังกล่าวได้
ทำงานสำหรับฉันตั้งแต่ 'สัมผัส' แทนที่ไฟล์ที่เสียหาย
ฉันมีปัญหาเดียวกันกับไฟล์ที่สร้างโดยฐานเว็บแบบกำหนดเอง EMR (เวชระเบียนอิเล็กทรอนิกส์) ภายใต้โครม sudo touch /forcefsck
ตามด้วยการรีสตาร์ทใช้งานได้สำหรับฉันและลบไฟล์แบบอะโรมาติก นำแบบฟอร์มช่วยเหลือมาติดตามหน้า
Linux Mint 18.3 ไฟล์ที่ไม่มีอยู่ของฉันคือ¨filename.pdf.crdownload¨มันปรากฏขึ้นบนเดสก์ท็อปของฉันเป็นแพคเกจเช่นไฟล์ zip ใน Windows พูด สำหรับ heck ของมันฉันคลิกขวาคุณสมบัติเปิดด้วยซึ่งแสดงให้เห็นแอพเป็นศูนย์ดังนั้นฉันจึงเปลี่ยนเป็น Open ด้วย¨Achchive Manager ¨ ไฟล์หายไปจากเดสก์ท็อปของฉันทันที กิโล