ใครบ้างมีสคริปต์ Mac Terminal เพื่อลบไฟล์ที่ซ่อนอยู่?


10

เครื่องเสียงรถยนต์ของฉันสามารถเล่นเพลงจาก USB แฟลชไดรฟ์เพื่อให้ฉันถามเกี่ยวกับการคัดลอกไฟล์ MP3 จาก iTunes เพลย์ลิส ใช้งานได้ดี แต่สเตอริโอของฉันจะไม่เล่นไฟล์ MP3 ในที่สุดฉันก็วางแฟลชไดรฟ์ลงในคอมพิวเตอร์ที่ทำงานที่ใช้ Windows 7 และฉันพบปัญหา: มีไฟล์ที่ซ่อนอยู่ในฟอร์แมท._[filename].mp3มากมายที่โหลดมาด้วย

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


ฉันมีปัญหาเดียวกันแน่นอน ถ้าไฟล์. _ อยู่ตรงนั้นสเตอริโอของฉันจะพูดว่า "สื่อไม่ดี" ซึ่งผิดทั้งหมด มันจะเล่นไฟล์ที่มีชื่อถูกต้อง แต่บ่นเกี่ยวกับแต่ละไฟล์. _ ฉันใช้เวลาสักครู่เพื่อตรวจสอบสื่อไม่เลวสเตอริโอรถยนต์เป็น!
เอริค

แต่มันไม่ใช่ความผิดของสเตอริโอมันดูด ... ฮ่า ๆ ฉันเพิ่งวางมันลงในคอมพิวเตอร์ Win7 ของฉันเพื่อใส่เพลงในที่ทำงานและเห็นพวกเขาทั้งหมด: ไฟล์ที่ซ่อนอยู่มากมายที่มี 4KB แต่ละไฟล์
ลุคแคนาดา

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

คำตอบ:


21

ไฟล์เหล่านี้ซ่อนอยู่ใน OS X เพราะขึ้นต้นด้วย.และจะไม่แสดงใน Finder ตามค่าเริ่มต้น ไม่มีชุดคุณลักษณะพิเศษในไฟล์เหล่านี้นอกเหนือจากนั้น

วิธีการที่ง่ายมากคือการลบไฟล์ทั้งหมดที่ขึ้นต้นด้วยจุดและขีดล่าง:

find /Volumes/<your-volume-name> -name '._*' -type f -delete

หมายเหตุด้านความปลอดภัย:เรียกใช้โดยไม่-deleteเห็นว่าจะลบไฟล์ใด และไม่เคยทำเช่นนี้กับ Mac HD ทั้งหมดของคุณเฉพาะในไดรฟ์ USB


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


ไม่ทราบว่า ... ดีน่ารู้ ฉันจะลองคืนนี้เมื่อฉันกลับถึงบ้านจากนั้นทำเครื่องหมายคำตอบของคุณ ขอบคุณ
ลุคแคนาดา

8

อีกหนึ่งโซลูชันที่ใช้งานได้สำหรับฉัน (MacOS 10.6.8) ในประเภทเทอร์มินัล

dot_clean "/Volumes/<your-volume-name>"

3

ฉันมีปัญหาเดียวกันกับเครื่องเสียงรถยนต์ของฉันอย่างแน่นอน 1 ไฟล์ / 2 ไม่สามารถเล่นได้เพราะผู้เล่นเห็นว่าไฟล์ dot ที่สร้างโดย MAC OS เป็นไฟล์เพลง ... จากนั้นฉันก็พบว่าโพสต์นี้มีประโยชน์จริงๆขอบคุณ

ดังนั้นฉันกลับมาตอนนี้ด้วยวิธีแก้ปัญหาที่ปรับปรุงและฟรีสำหรับ Mavericks:

  1. สร้างแอปพลิเคชัน Automator เพื่อเรียกใช้สคริปต์ AppleScript
  2. ใช้สคริปต์นี้:

    on run {input, parameters}
        try
            tell application "Finder" to set allDrives to the name of every disk whose local volume is true and startup is false
            set driveName to {choose from list allDrives with title "DiskCleaner" with prompt "Disk to Clean and Eject:" OK button name "Clean and Eject" cancel button name "Abort"} as text
            set getDriveIdentifier to "diskutil info " & quoted form of driveName & " | grep Ident | awk '{print $3}'"
            set driveIdentifier to do shell script getDriveIdentifier
            try
                do shell script "find /Volumes/" & quoted form of driveName & " -name '.DS_Store' -type f -delete"
                do shell script "find /Volumes/" & quoted form of driveName & " -name '.FBC*' -type f -delete"
                do shell script "find /Volumes/" & quoted form of driveName & " -name '._*' -type f -delete"
                do shell script "rm -rf /Volumes/" & quoted form of driveName & "/.{,_.}{fseventsd,Spotlight-V*,Trashes}"
                display notification "Disk Cleaned"
            on error
                try
                    do shell script "sudo find /Volumes/" & quoted form of driveName & " -name '.DS_Store' -type f -delete" with administrator privileges
                    do shell script "sudo find /Volumes/" & quoted form of driveName & " -name '.FBC*' -type f -delete" with administrator privileges
                    do shell script "sudo find /Volumes/" & quoted form of driveName & " -name '._*' -type f -delete" with administrator privileges
                    do shell script "sudo rm -rf /Volumes/" & quoted form of driveName & "/.{,_.}{fseventsd,Spotlight-V*,Trashes}" with administrator privileges
                    display notification "Disk Cleaned"
                on error
                    display notification "Can't Clean, Permission Denied"
                end try
            end try
            delay 1
            try
                do shell script "diskutil eject " & driveIdentifier
                display notification "Disk Ejected"
            on error
                display notification "Can't Eject, Disk in Use"
            end try
        on error
            display notification "No Disk to Clean and Eject"
        end try
    end run
    
  3. บันทึกแอปพลิเคชันเป็น DiskCleaner.app เช่น

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

แน่นอนว่ายังมีสถานที่สำหรับการปรับปรุงฉันทำสคริปต์นี้เพื่อตัวเอง!

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

สนุก!


สิ่งนี้มีประโยชน์จริง ๆ คุณจะลองโพสต์เวิร์กโฟลว์อัตโนมัติเต็มรูปแบบหรือไม่
Konrad

เยี่ยมมากขอบคุณมาก! ใช้งานได้กับฉันใน OSX10.12.1 ถ้าฉันลบออก{input, parameters}จากบรรทัด 1 (ออกจากเท่านั้นon run) @ Konrad: ฉันเปิด 'ตัวแก้ไขสคริปต์' ทำการแก้ไขดังกล่าวข้างต้นและบันทึกลงใน / แอปพลิเคชันเป็นแอป งานเสร็จ ฉันชอบที่จะเห็นสิ่งที่เกิดขึ้นซึ่งเป็นเรื่องยากกว่าด้วยโซลูชั่นฟรีอื่น ๆ
ptim

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

2

นอกจากนี้คุณยังสามารถใช้ Automator เพื่อทำสิ่งเดียวกันหากเทอร์มินัลทำให้คุณกลัว:

ลบ. _ *. mp3 ในเวิร์กโฟลว์อัตโนมัติ


เทอร์มินัลไม่ทำให้ฉันกลัวยกเว้นฉันทำ rm -rf / และกด Enter: P แต่ฉันต้องการเรียนรู้ Automator ดูเท่
Canadian Luke

อาใช่นั่นเป็นความคิดที่ดีเช่นกัน
slhck

รับรายการ Finder ที่เลือกมีประโยชน์ที่นี่หรือไม่
Daniel Beck

ไม่ได้จริงๆ ฉันใช้ Mac ของคนอื่นและต้องทำงานอย่างเร่งรีบ
digitxp

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