Uzyskaj listę wszystkich plików w folderze i podfolderze w pliku

28

Jak uzyskać listę wszystkich plików w folderze, w tym wszystkie pliki we wszystkich podfolderach i umieścić dane wyjściowe w pliku?

Namshum
źródło

Odpowiedzi:

39

Możesz to zrobić w wierszu poleceń, używając przełącznika -R (rekurencyjnego), a następnie przesyłając dane wyjściowe do pliku w ten sposób:

ls -R > filename1

spowoduje to utworzenie pliku o nazwie nazwa_pliku1 w bieżącym katalogu, zawierającego pełną listę katalogów bieżącego katalogu i wszystkich podkatalogów w nim zawartych.

Możesz wyświetlić katalogi inne niż bieżący, określając pełną ścieżkę, np .:

ls -R /var > filename2

wypisze wszystko w / pod / var i umieści wyniki w pliku w bieżącym katalogu o nazwie filename2. Działa to na katalogach należących do innego użytkownika, w tym na root, pod warunkiem, że masz dostęp do odczytu dla katalogów.

Za pomocą polecenia sudo możesz także wyświetlić katalogi, do których nie masz dostępu, takie jak / root. na przykład:

sudo ls -R /root > filename3

Wypisuje wszystko w katalogu / root, umieszczając wyniki w pliku o nazwie filename3 w bieżącym katalogu. Ponieważ większość systemów Ubuntu nie ma nic w tym katalogu nazwa_pliku3 nie będzie zawierała niczego, ale zadziałałoby, gdyby tak było.

producent 4
źródło
Być może można by dodać osobę, która najpierw poleci cd do katalogu, aby odpowiedzieć. Również to działa dobrze, jeśli jestem właścicielem katalogu, ale jeśli próbuję w katalogu, powiedz, że należy do roota, to nie zadziałało. Otrzymałem zwykłe pozwolenie, a sudo wydało polecenie również odmówiono zgody. Czy istnieje obejście bez logowania się jako root?
damien
Powiedziałem „bieżący” katalog. Prawidłowe użycie CD może być przedmiotem innego pytania i jestem tego pewien. Możesz wyświetlać katalogi będące własnością root, o ile masz do nich dostęp do odczytu. Katalogi należące do katalogu głównego, do których użytkownik ma dostęp do odczytu, można wyświetlić za pomocą ls -R. Trudno sobie wyobrazić, dlaczego chcesz wymienić katalogi będące własnością roota, do których nie masz dostępu do odczytu, ale sudo naprawdę działa, jeśli podasz pełną ścieżkę. Dodaję przykłady dla obu z nich, ale wyłączając użycie CD.
fabricator4
8

drzewo Zainstaluj drzewo

Alternatywą dla lsmetody rekurencyjnej jest narzędzie wiersza polecenia, treektóre oferuje całkiem sporo opcji dostosowywania formatu wyświetlanego wyniku. Zobacz stronę podręcznika dla drzewa dla wszystkich opcji.

Takkat
źródło
7

Wystarczy użyć findpolecenia z nazwą katalogu. Na przykład, aby zobaczyć pliki i wszystkie pliki w folderach w katalogu domowym, użyj

find ~

Sprawdź find ręcznego manpage dla findkomendyIkona strony

Sprawdź także stronę informacyjną GNU za pomocą info findpolecenia w terminalu.

Anwar
źródło
To najsilniejsze podejście. findma wiele parametrów do dostosowania formatu wyjściowego i wyboru pliku.
pauljohn32
To moim zdaniem najlepsze podejście. Prosty i praktyczny. Można to również zrobić, $ find . > outputjeśli istnieje wiele katalogów.
felippe
4

Również:

gvfs-tree /path/to/folder/

da ci to samo co drzewo, używając innych znaków dla linii.

tree -a

aby wyświetlić również ukryte pliki

tree -i

nie wyświetlać linii

Pili Garcia
źródło
1
  1. Przejdź do folderu, z którego chcesz uzyskać listę treści.
  2. Wybierz pliki, które chcesz z listy ( Ctrl+ Ajeśli chcesz cały folder).
  3. Skopiuj zawartość za pomocą Ctrl+ C.
  4. Otwórz gedit i wklej zawartość za pomocą Ctrl+ V. Zostanie wklejony jako lista, a następnie możesz zapisać plik.

Ta metoda nie będzie jednak zawierać podfolderów, ale treść.

Roy van Arem
źródło
1

Możesz także użyć odpowiednika GUI do treesugestii Takkata, którą jest Baobab . Służy do przeglądania folderów i podfolderów, często w celu analizy użycia dysku. Być może masz już zainstalowany, jeśli korzystasz z pulpitu GNOME (często nazywa się to analizatorem użycia dysku).

sudo apt-get install baobab

Możesz wybrać folder, a także wyświetlić wszystkie jego podfoldery, a także uzyskać rozmiary folderów i ich zawartości, jak pokazano na zrzucie ekranu poniżej. Wystarczy kliknąć małą strzałkę w dół, aby wyświetlić podfolder w folderze. Jest to bardzo przydatne, aby uzyskać szybki wgląd w to, co masz w folderach i może tworzyć widoczne listy, ale w tej chwili nie można ich wyeksportować do pliku. Zostało to jednak wymagane w Launchpad . Możesz nawet użyć go do przeglądania głównego systemu plików, jeśli go używasz gksudo baobab.

(Możesz również uzyskać listę plików o ich rozmiarach, używając, ls -shR ~/myfoldera następnie wyeksportuj ją do pliku.)

Wpisz opis zdjęcia tutaj

Peter Mortensen
źródło
OP chciał wyniki w pliku, prawdopodobnie aby zrobić z nim coś innego. Chociaż Baobab jest dobrym narzędziem, wydaje się, że nie spełnia wymogów pierwotnego pytania PO.
fabricator4
@ fabricator4 Dodałem także opcję ls, ponieważ baobab nie może obecnie wypisać listy.