Mam folder zawierający około stu podfolderów, a każdy z nich ma od 10 do 20 podfolderów, a więc w sumie dość duże drzewo folderów.
Czy istnieje prosty sposób, aby eksplodować lub wyeksportować wszystkie pliki z drzewa do nowego folderu, który będzie tylko jednym folderem zawierającym pliki (bez folderów, bez drzew)?
Używam systemu operacyjnego OS X 10.8, chociaż mam również Parallels, więc jeśli istnieje rozwiązanie Windows, mógłbym po prostu uruchomić to, ponieważ nie jest to coś, co muszę robić codziennie.
macos
filesystems
sam
źródło
źródło
Odpowiedzi:
W OS X powinno to działać:
The
find
polecenie przeszukuje wszystkie podkatalogi folderu/top/source/directory
i znajduje tylko pliki (opcja-type f
). Kiedy znajdzie jeden, wykonuje (-exec
) Komendamv
na znalezionym pliku ({}
), aby przenieść go do nowego katalogu,/destination/directory
.Zauważ, że to miejsce wcześniej
\;
jest absolutnie konieczne.źródło
Powinno to działać po stronie Windows PowerShell :
Get-ChildItem -Path "C:\Source" -Recurse -Include *.* | Move-Item -Destination "C:\Destination\"
źródło
Ta odpowiedź jest oparta na Pythonie, więc powinna działać zarówno na OSX, jak i na Windows, zakładając, że instalujesz Pythona (i dla rekordu jest z mojej głowy).
Powinno to skopiować wszystkie pliki (plus metadane) z pliku
path
struktura dostore
teczka.Jeśli nie zależy ci na konfliktach nazw, nie używaj kodu między
name = ""
ifor files in filenames
sprawozdania. To, co robi ten kod, to konwersja/
do_
a następnie dodaj tę wyczyszczoną nazwę katalogu do nazw plików.To zachowa oryginalną strukturę, którą możesz później usunąć
shutil.rmtree(path)
źródło