Make script to create subdirectories based on file name and move matching files into it [duplicate]
up vote
1
down vote
favorite
This question already has an answer here:
Move files by reading their file names to different directories
3 answers
A folder has a huge number of files; each pair of files has the same name but different extensions (.obj and .mtl). I want to make a folder for each pair of files with the same name, then move each pair of files into its matching folder.
File names always have letters; some also have underscores and numbers.
What I need to do is:
A) Read a file name
B) Make a subdirectory with the same name as the preceding file
C) Move the pair of files matching the filename into the matching subdirectory
D) Repeat for the next file
Example:
Files: Big_Column1.obj , Big_Column1.mtl
To be moved into subdirectory: Big_Column1
shell-script files rename
marked as duplicate by Christopher, Rui F Ribeiro, G-Man, Thomas, Jeff Schaller Dec 1 at 12:16
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
add a comment |
up vote
1
down vote
favorite
This question already has an answer here:
Move files by reading their file names to different directories
3 answers
A folder has a huge number of files; each pair of files has the same name but different extensions (.obj and .mtl). I want to make a folder for each pair of files with the same name, then move each pair of files into its matching folder.
File names always have letters; some also have underscores and numbers.
What I need to do is:
A) Read a file name
B) Make a subdirectory with the same name as the preceding file
C) Move the pair of files matching the filename into the matching subdirectory
D) Repeat for the next file
Example:
Files: Big_Column1.obj , Big_Column1.mtl
To be moved into subdirectory: Big_Column1
shell-script files rename
marked as duplicate by Christopher, Rui F Ribeiro, G-Man, Thomas, Jeff Schaller Dec 1 at 12:16
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
Can you add an example of the file names? Are they alphanumeric with a single dot at the extension and no other characters?
– ivanivan
Nov 30 at 23:34
add a comment |
up vote
1
down vote
favorite
up vote
1
down vote
favorite
This question already has an answer here:
Move files by reading their file names to different directories
3 answers
A folder has a huge number of files; each pair of files has the same name but different extensions (.obj and .mtl). I want to make a folder for each pair of files with the same name, then move each pair of files into its matching folder.
File names always have letters; some also have underscores and numbers.
What I need to do is:
A) Read a file name
B) Make a subdirectory with the same name as the preceding file
C) Move the pair of files matching the filename into the matching subdirectory
D) Repeat for the next file
Example:
Files: Big_Column1.obj , Big_Column1.mtl
To be moved into subdirectory: Big_Column1
shell-script files rename
This question already has an answer here:
Move files by reading their file names to different directories
3 answers
A folder has a huge number of files; each pair of files has the same name but different extensions (.obj and .mtl). I want to make a folder for each pair of files with the same name, then move each pair of files into its matching folder.
File names always have letters; some also have underscores and numbers.
What I need to do is:
A) Read a file name
B) Make a subdirectory with the same name as the preceding file
C) Move the pair of files matching the filename into the matching subdirectory
D) Repeat for the next file
Example:
Files: Big_Column1.obj , Big_Column1.mtl
To be moved into subdirectory: Big_Column1
This question already has an answer here:
Move files by reading their file names to different directories
3 answers
shell-script files rename
shell-script files rename
edited Nov 30 at 23:43
asked Nov 30 at 22:23
Ninjabdou
84
84
marked as duplicate by Christopher, Rui F Ribeiro, G-Man, Thomas, Jeff Schaller Dec 1 at 12:16
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
marked as duplicate by Christopher, Rui F Ribeiro, G-Man, Thomas, Jeff Schaller Dec 1 at 12:16
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
Can you add an example of the file names? Are they alphanumeric with a single dot at the extension and no other characters?
– ivanivan
Nov 30 at 23:34
add a comment |
Can you add an example of the file names? Are they alphanumeric with a single dot at the extension and no other characters?
– ivanivan
Nov 30 at 23:34
Can you add an example of the file names? Are they alphanumeric with a single dot at the extension and no other characters?
– ivanivan
Nov 30 at 23:34
Can you add an example of the file names? Are they alphanumeric with a single dot at the extension and no other characters?
– ivanivan
Nov 30 at 23:34
add a comment |
2 Answers
2
active
oldest
votes
up vote
0
down vote
accepted
Here's a quick one-liner to accomplish this. We simply iterate over all files in the current directory using shell globbing (assuming they are the ones you want), create a directory with the name of the file before the period using cut
to modify the name (mkdir -p
not erroring if the directory already exists), and move the file there. There's not really much to it.
for file in *; do dir=$(echo $file | cut -d. -f1); mkdir -p $dir; mv $file $dir; done
add a comment |
up vote
1
down vote
Tested and worked fine
Finding out the all filname and segregating the filenames with same name but with different extensions andsorting out and creating directory and move the files to directory of same name
In below example Big_Column1,Big_Column2 directories are created
for i in `ls -ltrh directorypath| awk '{print $NF}'| awk -F "." '{print $1}'| sort| uniq`; do mkdir $i; yes|cp $i* $i; done
Before
praveen_linux_example pravee]# ll
total 0
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column1.mtl
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column1.obj
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column2.mtl
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column2.obj
command:n_linux_example pravee]# for i in `ls -ltrh | awk '{print $NF}'| awk -F "." '{print $1}'| sort| uniq`; do mkdir $i; yes|cp $i* $i; done
after
After executing below is the output of ls -ltr
drwxr-xr-x. 2 root root 4096 Nov 30 22:39 Big_Column1
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column1.mtl
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column1.obj
drwxr-xr-x. 2 root root 4096 Nov 30 22:39 Big_Column2
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column2.mtl
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column2.obj
add a comment |
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
accepted
Here's a quick one-liner to accomplish this. We simply iterate over all files in the current directory using shell globbing (assuming they are the ones you want), create a directory with the name of the file before the period using cut
to modify the name (mkdir -p
not erroring if the directory already exists), and move the file there. There's not really much to it.
for file in *; do dir=$(echo $file | cut -d. -f1); mkdir -p $dir; mv $file $dir; done
add a comment |
up vote
0
down vote
accepted
Here's a quick one-liner to accomplish this. We simply iterate over all files in the current directory using shell globbing (assuming they are the ones you want), create a directory with the name of the file before the period using cut
to modify the name (mkdir -p
not erroring if the directory already exists), and move the file there. There's not really much to it.
for file in *; do dir=$(echo $file | cut -d. -f1); mkdir -p $dir; mv $file $dir; done
add a comment |
up vote
0
down vote
accepted
up vote
0
down vote
accepted
Here's a quick one-liner to accomplish this. We simply iterate over all files in the current directory using shell globbing (assuming they are the ones you want), create a directory with the name of the file before the period using cut
to modify the name (mkdir -p
not erroring if the directory already exists), and move the file there. There's not really much to it.
for file in *; do dir=$(echo $file | cut -d. -f1); mkdir -p $dir; mv $file $dir; done
Here's a quick one-liner to accomplish this. We simply iterate over all files in the current directory using shell globbing (assuming they are the ones you want), create a directory with the name of the file before the period using cut
to modify the name (mkdir -p
not erroring if the directory already exists), and move the file there. There's not really much to it.
for file in *; do dir=$(echo $file | cut -d. -f1); mkdir -p $dir; mv $file $dir; done
answered Dec 1 at 2:06
multithr3at3d
42028
42028
add a comment |
add a comment |
up vote
1
down vote
Tested and worked fine
Finding out the all filname and segregating the filenames with same name but with different extensions andsorting out and creating directory and move the files to directory of same name
In below example Big_Column1,Big_Column2 directories are created
for i in `ls -ltrh directorypath| awk '{print $NF}'| awk -F "." '{print $1}'| sort| uniq`; do mkdir $i; yes|cp $i* $i; done
Before
praveen_linux_example pravee]# ll
total 0
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column1.mtl
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column1.obj
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column2.mtl
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column2.obj
command:n_linux_example pravee]# for i in `ls -ltrh | awk '{print $NF}'| awk -F "." '{print $1}'| sort| uniq`; do mkdir $i; yes|cp $i* $i; done
after
After executing below is the output of ls -ltr
drwxr-xr-x. 2 root root 4096 Nov 30 22:39 Big_Column1
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column1.mtl
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column1.obj
drwxr-xr-x. 2 root root 4096 Nov 30 22:39 Big_Column2
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column2.mtl
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column2.obj
add a comment |
up vote
1
down vote
Tested and worked fine
Finding out the all filname and segregating the filenames with same name but with different extensions andsorting out and creating directory and move the files to directory of same name
In below example Big_Column1,Big_Column2 directories are created
for i in `ls -ltrh directorypath| awk '{print $NF}'| awk -F "." '{print $1}'| sort| uniq`; do mkdir $i; yes|cp $i* $i; done
Before
praveen_linux_example pravee]# ll
total 0
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column1.mtl
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column1.obj
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column2.mtl
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column2.obj
command:n_linux_example pravee]# for i in `ls -ltrh | awk '{print $NF}'| awk -F "." '{print $1}'| sort| uniq`; do mkdir $i; yes|cp $i* $i; done
after
After executing below is the output of ls -ltr
drwxr-xr-x. 2 root root 4096 Nov 30 22:39 Big_Column1
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column1.mtl
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column1.obj
drwxr-xr-x. 2 root root 4096 Nov 30 22:39 Big_Column2
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column2.mtl
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column2.obj
add a comment |
up vote
1
down vote
up vote
1
down vote
Tested and worked fine
Finding out the all filname and segregating the filenames with same name but with different extensions andsorting out and creating directory and move the files to directory of same name
In below example Big_Column1,Big_Column2 directories are created
for i in `ls -ltrh directorypath| awk '{print $NF}'| awk -F "." '{print $1}'| sort| uniq`; do mkdir $i; yes|cp $i* $i; done
Before
praveen_linux_example pravee]# ll
total 0
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column1.mtl
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column1.obj
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column2.mtl
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column2.obj
command:n_linux_example pravee]# for i in `ls -ltrh | awk '{print $NF}'| awk -F "." '{print $1}'| sort| uniq`; do mkdir $i; yes|cp $i* $i; done
after
After executing below is the output of ls -ltr
drwxr-xr-x. 2 root root 4096 Nov 30 22:39 Big_Column1
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column1.mtl
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column1.obj
drwxr-xr-x. 2 root root 4096 Nov 30 22:39 Big_Column2
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column2.mtl
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column2.obj
Tested and worked fine
Finding out the all filname and segregating the filenames with same name but with different extensions andsorting out and creating directory and move the files to directory of same name
In below example Big_Column1,Big_Column2 directories are created
for i in `ls -ltrh directorypath| awk '{print $NF}'| awk -F "." '{print $1}'| sort| uniq`; do mkdir $i; yes|cp $i* $i; done
Before
praveen_linux_example pravee]# ll
total 0
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column1.mtl
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column1.obj
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column2.mtl
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column2.obj
command:n_linux_example pravee]# for i in `ls -ltrh | awk '{print $NF}'| awk -F "." '{print $1}'| sort| uniq`; do mkdir $i; yes|cp $i* $i; done
after
After executing below is the output of ls -ltr
drwxr-xr-x. 2 root root 4096 Nov 30 22:39 Big_Column1
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column1.mtl
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column1.obj
drwxr-xr-x. 2 root root 4096 Nov 30 22:39 Big_Column2
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column2.mtl
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column2.obj
answered Dec 1 at 6:47
Praveen Kumar BS
1,166138
1,166138
add a comment |
add a comment |
Can you add an example of the file names? Are they alphanumeric with a single dot at the extension and no other characters?
– ivanivan
Nov 30 at 23:34