Główna » jak » Jak sprawić, aby pojedynczy plik pojawiał się w wielu folderach w tym samym czasie?

    Jak sprawić, aby pojedynczy plik pojawiał się w wielu folderach w tym samym czasie?

    Jeśli masz dużą liczbę folderów skonfigurowanych do pracy i musisz użyć tego samego pliku skryptu we wszystkich z nich w ciągu dnia pracy, to jaki jest najłatwiejszy sposób, aby to osiągnąć poza kopiowaniem i wklejaniem? Dzisiejszy post z pytaniami i odpowiedziami dla SuperUser zawiera przydatne odpowiedzi i porady dla sfrustrowanego czytelnika.

    Dzisiejsza sesja pytań i odpowiedzi przychodzi do nas dzięki uprzejmości SuperUser - poddziału Stack Exchange, opartego na społecznościach grupowania witryn z pytaniami i odpowiedziami.

    Zdjęcie dzięki uprzejmości csaveanu (Flickr).

    Pytanie

    Czytnik SuperUser Elliot szuka najlepszego sposobu, aby ten sam plik był wyświetlany w wielu folderach jednocześnie:

    Mam ponad 50 folderów, z których każdy zawiera dużą ilość danych, które należy przetworzyć. Wszystkie są przetwarzane przy użyciu tego samego kodu, wykorzystując os.path.dirname (os.path.realpath (plik)) aby uzyskać katalog, w którym znajduje się skrypt Pythona, więc użytkownik nie potrzebuje ręcznej edycji, wystarczy podwójne kliknięcie.

    Potrzebuję skryptu, aby wyglądał tak, jakby znajdował się w każdym folderze, będąc w rzeczywistości tylko w jednym miejscu, tak, że mogę go edytować raz, a kiedy zostanie uruchomiony z dowolnej z tych lokalizacji, ścieżka folderu będzie poprawna. Alternatywą jest edycja wzorca, a następnie wklejanie go po jednym folderze za pośrednictwem wszystkich 50+ folderów za każdym razem, gdy aktualizuję kod, co jest bardzo uciążliwe i podatne na błędy. W Linuksie mógłbym ustawić to za pomocą dowiązania symbolicznego, ale nie mogę znaleźć sposobu, aby to zrobić w systemie Windows.

    Alternatywnie, sposób wklejenia pliku do wszystkich docelowych katalogów naraz, zamiast pojedynczych naraz, może osiągnąć ten sam cel.

    Czy istnieje sposób, aby to zrobić, zamiast kopiować i wklejać plik skryptu po jednym folderze na raz?

    Odpowiedź

    Użytkownik SuperUser gronostaj ma dla nas odpowiedź:

    Potrzebujesz Link symboliczny lub Twardy link.

    Połączenia symboliczne (lub Dowiązania symboliczne w skrócie) są dość podobne do skrótów: istnieje jeden rzeczywisty plik i wiele odnośników (Dowiązania symboliczne) do tego. Mają nawet tę małą strzałkę na ikonach. W przeciwieństwie do skrótów, Dowiązania symboliczne może mieć dowolne rozszerzenie.

    Twarde łącza powiązać plik na twardym dysku z lokalizacją w drzewie katalogów. Każdy plik ma co najmniej jeden Twardy link, inaczej nie byłoby w żadnym katalogu. Jeśli plik ma wiele Twarde łącza, oryginalnego nie można odróżnić od innych, a plik fizycznie istnieje tylko w jednym miejscu.

    Oba mają swoje ograniczenia:

    • Niektóre programy nie ładnie współpracują z Dowiązania symboliczne.
    • Usunięcie oryginalnego pliku pozostawia go w całości Dowiązania symboliczne złamany.
    • Nie możesz Twardy link foldery (ale możesz utworzyć węzeł katalogu, jeśli Symlink nie wystarcza).
    • Tworzenie cross-partycji Twarde łącza jest niemożliwe.

    Dowiązania symboliczne zwykle wystarczają.

    Aby utworzyć łącze symboliczne lub twarde:

    1. Uruchom uprzywilejowaną linię poleceń: naciśnij Klawisz Windows, rodzaj cmd, następnie wciśnij Ctrl + Shift + Enter.

    2. Wydaj polecenie mklink:

    • mklink link_name link_target dla pliku Symlink
    • mklink / d link_name link_target dla folderu Symlink
    • mklink / h link_name link_target dla pliku Twardy link
    • mklink / j link_name link_target dla a Węzeł katalogu

    Czy masz coś do dodania do wyjaśnienia? Dźwięk w komentarzach. Chcesz przeczytać więcej odpowiedzi od innych użytkowników Stack Exchange, którzy znają się na technologii? Sprawdź cały wątek dyskusji tutaj.