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.