Aby to zrobić, otwórz terminal i wykonaj następujące polecenie:
mv -v ~/Downloads/* ~/Videos/
Przeniesie wszystkie pliki i foldery z folderu Pobrane do folderu Wideo.
Aby przenieść wszystkie pliki, ale nie foldery:
Jeśli jednak chcesz przenieść wszystkie pliki (ale nie foldery) z folderu Pobrane do folderu Wideo, użyj tego polecenia
find ~/Downloads/ -type f -print0 | xargs -0 mv -t ~/Videos
Aby przenieść tylko pliki z folderów pobierania, ale nie z podfolderów:
Jeśli chcesz przenieść wszystkie pliki z folderu Pobrane, ale żadnych plików w folderach w folderze Pobrane, użyj tego polecenia:
find ~/Downloads/ -maxdepth 1 -type f -print0 | xargs -0 mv -t ~/Videos
tutaj -maxdepth
opcja określa, jak głębokie próbować powinno się znaleźć,
1
oznacza to tylko katalog określony w poleceniu find. Możesz spróbować użyć 2
, 3
również do testowania.
Zobacz stronę podręcznika użytkownika Ubuntu, aby uzyskać szczegółowe wyjaśnienie.
Rozwiązanie
Polecenie znajdzie wszystkie zwykłe pliki w
/src/dir
(łącznie ze wszystkimi podkatalogami) i przeniesie je do pliku/dst/dir
za pomocą poleceniamv
. Po prostu zastąp katalogi swoim. Pliki o tych samych nazwach zostaną automatycznie zmienione.Wybieranie plików do przeniesienia
Jeśli chcesz przenieść tylko pliki MP3, dodaj
-iname "*.mp3"
opcję dofind
polecenia po-type f
.Porównanie z odpowiedzią c0dev
Tylko drugie polecenie w odpowiedzi c0dev odpowiada na pytanie. Poniżej znajduje się porównanie z tą odpowiedzią. Punkty 3. i 4. można rozwiązać w innej odpowiedzi w ten sam sposób, jak tutaj.
mv
że rozwiązanie z-exec +
tym nie musi wywoływać dodatkowego polecenia, takiego jakxargs
lubparallel
i dwukrotnie przekazywać nazwy plików.--backup=numbered
. Niestety te kopie zapasowe z sufiksem typu jak~3~
będą domyślnie ukryte w większości plików. Niestetymv
nie pozwala na zmianę sufiksu, ale można go łatwo przetworzyć za pomocą dodatkowych poleceń. To jest rozszerzenie GNU.-print0
-exec command {} +
jest częścią standardów IEEE Std 1003.1 (POSIX), ISO / IEC 9945 i pojedynczej specyfikacji UNIX. Dlatego powinien być bardziej przenośny. Patrz IEEE Std 1003.1, wydanie 2004 , IEEE Std 1003.1, wydanie 2013 i 0000243: Dodaj -print0, aby „znaleźć” . Ale w każdym razie wymagany-t
przełącznikmv
to rozszerzenie GNU, więc cała komenda nie jest przenośna między systemami POSIX.Uwaga: W przypadku
find
byłby w stanie produkować ścieżki zaczynające się-
(nie wiem o takiej realizacjifind
w tej chwili).{}
Powinno być poprzedzone wskaźnika wycofanych z opcji:--
.źródło
{}
musi to być ostatni argument. PoprawioneNiestety nie mam wystarczająco wysokiej reputacji, aby komentować zaznaczone rozwiązanie. Chciałem jednak ostrzec innych przed napotkanym problemem. To dość amatorskie; jednak, gdy robisz kilka rzeczy, na początku może nie przychodzić ci to do głowy. Mam nadzieję, że pomoże innym.
Problem
Po zainicjowaniu polecenia podano warianty następującego komunikatu. Następnie polecenie tworzy wiele plików.
Przyczyna
/src
Jest dominującą/dst
(EG/src/../dst/
).Rozwiązanie
Chociaż może istnieć lepsze rozwiązanie, po prostu przeniosłem pliki do katalogu tymczasowego poza moim,
/src
a następnie zmieniłem polecenie, aby umieścić je z powrotem w/src/../dst
katalogu, w którym chciałbym, aby skończyły.źródło
My one-liner - działa na komputerach Mac, ale powinien również działać na każdym * nix. Zacznij od katalogu nadrzędnego.
Pierwsza część przenosi wszystko ze wszystkich podfolderów do właściwego folderu, z którego patrzysz na polecenie; druga część sprawdza, czy podkatalogi są puste (powinny teraz :-) i usuwa je, aby uzyskać wszystko tutaj bez podkatalogów.
źródło
-not
operator nie jest standardowy, więc twoje polecenie jest mniej przenośne niż inne.Otwórz terminal, przejdź do folderu folderów z plikami i uruchom,
find . -mindepth 2 -type f -print -exec mv {} . \;
aby przenieść wszystkie pliki z tych podkatalogów do bieżącego.źródło