How do I copy all PDF files from a directory, and it's subdirectories, to a single directory?
there are actually many more files, and of of somewhat arbitrary depth. It's fair to assume maximum depth of four directories.
I suppose the files need to renamed, in the event that a.pdf, for example, is in several directories. Because I'll be adding the files to Calibre, duplicates are preferred over leaving out files. (Not looking to check files against each other for duplicates.)
Following KISS principles:
PS /home/nicholas/to>
PS /home/nicholas/to> Copy-Item -path "/home/nicholas/from" -include "*.pdf" -Destination "/home/nicholas/to"
PS /home/nicholas/to>
PS /home/nicholas/to> ls /home/nicholas/to
PS /home/nicholas/to>
PS /home/nicholas/to> ls /home/nicholas/from
one two
PS /home/nicholas/to>
PS /home/nicholas/to> tree /home/nicholas/from
/home/nicholas/from
├── one
│ ├── a.pdf
│ ├── b.pdf
│ └── foo.txt
└── two
├── bar.txt
├── c.pdf
└── d.pdf
2 directories, 6 files
PS /home/nicholas/to>
Obviously, the above attempt fails to traverse into sub-directories, and doesn't deal with name clashes.
Probably makes sense to rename each PDF as it's copied. The recurse flag seems useful:
PS /home/nicholas/to>
PS /home/nicholas/to> ls
PS /home/nicholas/to>
PS /home/nicholas/to> Copy-Item -Path "/home/nicholas/from" -Destination "/home/nicholas/to" -Recurse
PS /home/nicholas/to>
PS /home/nicholas/to> tree
.
└── from
├── one
│ ├── a.pdf
│ ├── b.pdf
│ └── foo.txt
└── two
├── bar.txt
├── c.pdf
└── d.pdf
3 directories, 6 files
PS /home/nicholas/to>
not sure how filter out txt files and put everything into a single directory, however.
Copying all PDF files with some success:
PS /home/nicholas/to>
PS /home/nicholas/to> ls
PS /home/nicholas/to>
PS /home/nicholas/to> tree /home/nicholas/from/
/home/nicholas/from/
├── one
│ ├── a.pdf
│ ├── b.pdf
│ └── foo.txt
└── two
├── bar.txt
├── c.pdf
└── d.pdf
2 directories, 6 files
PS /home/nicholas/to>
PS /home/nicholas/to> Get-ChildItem /home/nicholas/from -File -Recurse | Copy-Item -Destination /home/nicholas/to -filter '*.pdf'
PS /home/nicholas/to>
PS /home/nicholas/to> tree
.
├── a.pdf
├── bar.txt
├── b.pdf
├── c.pdf
├── d.pdf
└── foo.txt
0 directories, 6 files
PS /home/nicholas/to>
but how do I add some logic to rename and increment the files with a pattern like 1.pdf, 2.pdf, etc?
Looking to "merge" folders with PDF's to a single directory.