मैं असफल उपनामों को कैसे ठीक करूं?


7

मेरे पास दो बाहरी हार्ड डिस्क थे: बाहरी और बैकअप। बाह्य में कई उपनाम थे जो एक ही डिस्क पर अन्य फ़ाइलों की ओर इशारा करते थे। बैकअप का उपयोग बाह्य बैकअप के लिए किया गया था।

बाहरी विफल रहा, और मैं अब बैकअप का उपयोग करता हूं, जो कि मैंने बाहरी के नाम पर रखा है। दुर्भाग्य से, अब वे सभी उपनाम इंगित करते हैं /Volumes/Backup/… और इस प्रकार अब काम नहीं करता।

मैं उन्हें ठीक करने या एक बार में उन्हें फिर से बनाने के लिए नहीं करना चाहता।

क्या सभी उपनामों को ठीक करने का एक तरीका है ताकि वे इंगित करें /Volumes/External/… के बजाय /Volumes/Backup/…?


आपकी कहानी से कुछ गायब है। OS X में, वॉल्यूम का नाम बदलने पर उपनाम नहीं टूटेंगे।
ghoppe

2
वे अगर वे / वॉल्यूम में एक पथ को इंगित करते हैं
Robert S Ciaccio

1
@calavara उपनाम प्रतीकात्मक लिंक नहीं हैं वे एक फ़ाइल आईडी से लिंक करते हैं एक पथ नहीं
ghoppe

@ghoppe: मैं क्या देखता हूं कि उपनाम टूट गए हैं। मैं उन्हें पूरी तरह से ठीक करना चाहता हूं और मुझे नहीं पता कि कैसे। मेरी कहानी का मुख्य गायब हिस्सा, मुझे डर है, खोजक के अंदर है। जहां तक ​​मुझे पता है, उपनामों में न केवल एक फ़ाइल आईडी है, बल्कि एक पथ और कई अन्य informations भी हैं जो एक छिपी हुई एल्गोरिथ्म उपनाम के लिए उपयोग करता है। अगर मैं उपयोग करता हूं strings मेरी असफल उपनामों पर कमान, मैं निरीक्षण करता हूं कि उनके पास एक पूर्ण पथ है /Volumes/Backup/...। वैसे भी, मुझे लगता है कि एक रिश्तेदार पथ के साथ सांकेतिक लिंक मेरे मामले में एक अधिक मजबूत समाधान हो सकता है।
mouviciel

@ghoppe: वे एक पथ शामिल ... जाँच करें en.wikipedia.org/wiki/Alias_%28Mac_OS%29 । विशेष रूप से अनुभाग "एलियास विफलता को रोकना", और बयान "यह यूनिक्स प्रतीकात्मक लिंक के समान है, लेकिन काम करने के अतिरिक्त लाभ के साथ भले ही लक्ष्य फ़ाइल किसी अन्य स्थान पर चली जाए वही डिस्क ", और" मूल को दूसरी जगह ले जाया जा सकता है एक ही फाइल सिस्टम के भीतर , बिना लिंक को तोड़े। "
Robert S Ciaccio

जवाबों:


3

यहाँ Applescript के साथ इस समस्या को हल करने में मेरा छुरा है। निम्नलिखित एप्सस्क्रिप्ट खोजक में चयनित उपनामों को ले जाएगा और उन्हें नए पथ के स्थान पर पुन: प्रयास और स्थानांतरित करेगा Backup साथ में External POSIX पथ में।

उम्मीद है कि यह सीधा है। आप शायद चयनित फ़ोल्डरों में उपनामों की खोज करने के लिए इसे पुनरावर्ती बना सकते हैं, लेकिन यह मेरे काम करने की तुलना में अधिक काम है - और फिर फ़ोल्डरों को उपनामों से निपटने की समस्या है। चीजें गड़बड़ हो सकती हैं। ;-)

आशा करता हूँ की ये काम करेगा।

tell application "Finder"
    set these_items to the selection
end tell

repeat with i from 1 to the count of these_items
    set this_item to (item i of these_items) as alias
    set this_info to info for this_item

    if class of this_item is alias then
        tell application "Finder"
            set original_file to original item of this_item
            set this_alias_file_name to displayed name of this_item
            set container_folder to container of this_item

            set the_path to the POSIX path of (original_file as alias)
            set new_path to my replaceText("/Backup/", "/External/", the_path)

            move this_item to trash
            try
                make new alias file at container_folder to (POSIX file new_path) with properties {name:this_alias_file_name}
            on error errMsg number errorNumber
                if errorNumber is -10000 then -- new original file not found, try relinking to old
                    try
                        make new alias file at container_folder to (POSIX file the_path) with properties {name:this_alias_file_name}
                    on error errMsg number errorNumber
                        if errorNumber is -10000 then -- old original not found. link's dead Jim
                            display dialog "The original file for alias " & this_alias_file_name & " was not found."
                        else
                            display dialog "An unknown error occurred:  " & errorNumber as text
                        end if
                    end try
                else
                    display dialog "An unknown error occurred:  " & errorNumber as text
                end if
            end try
        end tell
    end if
end repeat

on replaceText(find, replace, subject)
    set prevTIDs to text item delimiters of AppleScript
    set text item delimiters of AppleScript to find
    set subject to text items of subject

    set text item delimiters of AppleScript to replace
    set subject to "" & subject
    set text item delimiters of AppleScript to prevTIDs

    return subject
end replaceText

इस स्क्रिप्ट के लिए बहुत धन्यवाद! मैं अप्प्लीस्क्रिप्ट विशेषज्ञ नहीं हूं इसलिए मैं इसे अपग्रेड करने की कोशिश नहीं करूंगा। मुझे लगता है कि एक संभव समाधान एप्सस्क्रिप्ट के बीच स्थित है और इसके शक्तिशाली के साथ टकराता है find। एक बार फिर धन्यवाद!
mouviciel

यह नहीं कह सकते हैं कि यह एक उत्तर है, लेकिन मैं ऊपर स्क्रिप्ट को चलाने की कोशिश कर रहा हूं, और एक त्रुटि हो रही है, यह कहते हुए कि यह उर्फ ​​फ़ाइल का मूल आइटम नहीं प्राप्त कर सकता है। हालाँकि, जब मैं मैन्युअल रूप से प्रश्न के लिए फ़ाइल की जानकारी प्राप्त करता हूं, तो मुझे डिस्प्ले में 'मूल' मान दिखाई देता है। प्रासंगिक स्निपेट: यदि इस_अतिमान का वर्ग उर्फ ​​है, तो अनुप्रयोग "फाइंडर" को मूल_फाइल को सेट करें_इस के मूल आइटम को सेट करें। किसी भी विचार का परिणाम यह होगा कि खोजकर्ता की गेट इन्फो स्पष्ट रूप से दिखाए जाने पर कोई मूल आइटम क्यों नहीं होगा?

नीदरलैंड से ghoppe thx आपकी स्क्रिप्ट मेरे लिए सबसे अच्छी थी, जिसके परिणामस्वरूप एक उत्कृष्ट काम हुआ! हॉलैंड से कनाडा के लिए बधाई ;-) रॉबिन

2

बैकअप के लिए डिस्क का नाम बताएं? गंभीरता से, मुझे लगता है कि समस्या को हल करने का सबसे तेज़ तरीका होगा। या आप एक शेल स्क्रिप्ट लिख सकते हैं, जो "बैकअप" वॉल्यूम की ओर इशारा करते हुए सभी अल्लेज़ को पुन: खोजती है और उन्हें नए नाम की ओर संकेत करती है ...

संपादित करें

चेक आउट http://sveinbjorn.org/osxutils_docs , विशेष रूप से मकालिया।


मेरे नए बैकअप को "बैकअप" नाम दिया गया है ... शेल स्क्रिप्ट विचार वह है जो मेरे मन में है लेकिन मुझे पता है कि कोई उपकरण अन्य सामग्री को प्रदर्शित करने और बदलने में सक्षम नहीं है।
mouviciel

दिलचस्प लग रहा है! लेकिन नवीनतम संस्करण 2003 दिनांकित है और उल्लेखित तकनीकी नोट मैक ओएस 9 के लिए है ... अगर मुझे और कुछ नहीं मिला, तो मैं इसे हिम तेंदुए के लिए अपडेट करने का प्रयास करूंगा ...
mouviciel

1

मुझे हाल ही में इसी समस्या को हल करना था, और सभी उपनामों को पुनरावर्ती रूप से ठीक करने के लिए इस रूबी कोड को लिखा

मैं इसे यहाँ पेस्ट करूँगा:

#!/usr/bin/ruby

# these are the folders containing all your images
if ARGV.size == 2
  dir_base     = ARGV[0]
  alias_folder = ARGV[1]
else
  puts "usage $0 dir_with_all_files sub_dir_containing_broken_aliases"
  puts "  or pass -d to use defaults:  ~/img  background"
  if ARGV[0] && ARGV[0] == '-d'
    dir_base     = File.expand_path '~/img'
    alias_folder = 'background'
  end
end

# list of all alias file paths, dirs excluded
alist = Dir.glob("#{dir_base}/#{alias_folder}/**/*").
            select{|w| w.scan('.').any? }

# a list of all file paths, alias fodler contents excluded
flist = Dir.glob("#{dir_base}/**/*").
            reject{|w| w.scan("#{dir_base}/#{alias_folder}").any? }

# forcably create new aliases by overwriting old files
alist.each do |f| 
  flist.each do |w| 
    `ln -fs #{w.gsub(' ','\ ')} #{f.gsub(' ','\ ')}` if w.split('/').last == f.split('/').last
    puts "linked #{w.gsub(' ','\ ')}  to  #{f.gsub(' ','\ ')}"
  end
end

+1 हालांकि मैंने अपनी समस्या पहले ही हल कर ली है, मेरा मानना ​​है कि आपका योगदान दूसरों के लिए मददगार होगा। धन्यवाद।
mouviciel

0

उनकी समस्या "बैकअप" नाम के साथ नहीं है। मेरे साथ ऐसा होता है कि "फाइलों की तुलना करें" संदर्भ मेनू (मुझे लगता है कि यह मुद्दा है) और निश्चित रूप से ड्रीमविवर से खोली गई फ़ाइलों के साथ। Apple OS में कुछ बदलाव / सुधार किए गए हैं क्योंकि DW विभाजन के नाम से पहले "वॉल्यूम" के बिना क्रोम में उसी फ़ाइल को खोलने की कोशिश करता है, और क्रोम में खोली गई वही फ़ाइल "वॉल्यूम" को प्रकट करती है जो काम करती है।

इसलिए या तो एडोब या ऐप्पल ने एक बदलाव किया या जिस तरह से वे इंगित करते हैं / उसी डिस्क ड्राइव में स्टार्टअप डिस्क के अलावा एक विभाजन को कॉल किया।

तो ओपी मामले में, ड्राइव का नाम आईएस बैकअप है। समस्या यह है कि उपनामों में "वॉल्यूम" है। मुझे लगता है कि कुछ बिंदु पर स्टार्टअप डिस्क का अर्थ "वॉल्यूम" को शामिल नहीं करना था और बाद में उन्होंने इसे फाइंडर और अन्य स्पष्ट स्थानों के लिए निर्धारित किया, लेकिन वे अभी तक उपनामों में नहीं आए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.