Renaming Multiple files in different directories [duplicate]
This question already has an answer here:
How to prepare files for rsync on a case insensitive filesystem?
4 answers
I have about 5TB of data stored on Synology NAS servers with a DSM of 6.1+, so bash should be available for use on these systems. The issue is that we are currently archiving this data to external hard drives formatted for NTFS. The main issue is that during the archiving process there appears to be some file conflicts where Linux is case sensitive but Windows is not. So for example:
Test.txt
test.txt
In linux these are two separate files, but Windows will see them as one file.
The question in hand is that I should be able to figure out which files are conflicts using a tool we used in the past, but there are too many files to rename them manually. These files are spread out across multiple directories going 3 or 4 directories down. If I was able to find out all of the files that are in fact conflicts, what would be the easiest way to rename these files?
The naming really does not matter as long as they do not move from their current location. In the past I have just added a "1" to the end of some of these conflicts, but like I said there are hundreds of conflicts this time.
Are there any recommended tools to find file conflicts like this?
linux bash shell-script synology
marked as duplicate by Jeff Schaller, Mr Shunz, Christopher, Centimane, elbarna Jan 17 at 21:12
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 |
This question already has an answer here:
How to prepare files for rsync on a case insensitive filesystem?
4 answers
I have about 5TB of data stored on Synology NAS servers with a DSM of 6.1+, so bash should be available for use on these systems. The issue is that we are currently archiving this data to external hard drives formatted for NTFS. The main issue is that during the archiving process there appears to be some file conflicts where Linux is case sensitive but Windows is not. So for example:
Test.txt
test.txt
In linux these are two separate files, but Windows will see them as one file.
The question in hand is that I should be able to figure out which files are conflicts using a tool we used in the past, but there are too many files to rename them manually. These files are spread out across multiple directories going 3 or 4 directories down. If I was able to find out all of the files that are in fact conflicts, what would be the easiest way to rename these files?
The naming really does not matter as long as they do not move from their current location. In the past I have just added a "1" to the end of some of these conflicts, but like I said there are hundreds of conflicts this time.
Are there any recommended tools to find file conflicts like this?
linux bash shell-script synology
marked as duplicate by Jeff Schaller, Mr Shunz, Christopher, Centimane, elbarna Jan 17 at 21:12
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 |
This question already has an answer here:
How to prepare files for rsync on a case insensitive filesystem?
4 answers
I have about 5TB of data stored on Synology NAS servers with a DSM of 6.1+, so bash should be available for use on these systems. The issue is that we are currently archiving this data to external hard drives formatted for NTFS. The main issue is that during the archiving process there appears to be some file conflicts where Linux is case sensitive but Windows is not. So for example:
Test.txt
test.txt
In linux these are two separate files, but Windows will see them as one file.
The question in hand is that I should be able to figure out which files are conflicts using a tool we used in the past, but there are too many files to rename them manually. These files are spread out across multiple directories going 3 or 4 directories down. If I was able to find out all of the files that are in fact conflicts, what would be the easiest way to rename these files?
The naming really does not matter as long as they do not move from their current location. In the past I have just added a "1" to the end of some of these conflicts, but like I said there are hundreds of conflicts this time.
Are there any recommended tools to find file conflicts like this?
linux bash shell-script synology
This question already has an answer here:
How to prepare files for rsync on a case insensitive filesystem?
4 answers
I have about 5TB of data stored on Synology NAS servers with a DSM of 6.1+, so bash should be available for use on these systems. The issue is that we are currently archiving this data to external hard drives formatted for NTFS. The main issue is that during the archiving process there appears to be some file conflicts where Linux is case sensitive but Windows is not. So for example:
Test.txt
test.txt
In linux these are two separate files, but Windows will see them as one file.
The question in hand is that I should be able to figure out which files are conflicts using a tool we used in the past, but there are too many files to rename them manually. These files are spread out across multiple directories going 3 or 4 directories down. If I was able to find out all of the files that are in fact conflicts, what would be the easiest way to rename these files?
The naming really does not matter as long as they do not move from their current location. In the past I have just added a "1" to the end of some of these conflicts, but like I said there are hundreds of conflicts this time.
Are there any recommended tools to find file conflicts like this?
This question already has an answer here:
How to prepare files for rsync on a case insensitive filesystem?
4 answers
linux bash shell-script synology
linux bash shell-script synology
edited Jan 16 at 19:14
Rui F Ribeiro
39.6k1479132
39.6k1479132
asked Jan 16 at 19:09
bbeldenbbelden
31
31
marked as duplicate by Jeff Schaller, Mr Shunz, Christopher, Centimane, elbarna Jan 17 at 21:12
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 Jeff Schaller, Mr Shunz, Christopher, Centimane, elbarna Jan 17 at 21:12
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 |
add a comment |
1 Answer
1
active
oldest
votes
You can get a list of all the files in the current and sub folders using find . | sort -f
. The sort will ignore the case so that files with the same name (ignoring case) are next to each other, e.g.:
./folder/dir/something/test
./folder/dir/something/TEST
This should be passed to a script, e.g. Python, which can check each line with the next/previous and if there is a match, you can rename the file, adding understores, or something to it. This should not be too difficult to work out, I imagine.
Edit:
#!/usr/bin/env python3
import sys
if __name__ == "__main__":
old_line = ""
cur_line = ""
for line in sys.stdin:
old_line = cur_line
cur_line = line
if old_line.lower() == cur_line.lower():
print("Duplicate found!")
print("File: {}".format(cur_line))
I called it like this:
find ../ | sort -f | ./rename_files.py
Duplicate found!
File: ../c/modern-approach/test
As there is a second file in that directory called ../c/modern-approach/TEST
.
Thank you for the response. I like your idea of using the find command to get a list of the files in the directories and sub-directories.
– bbelden
Jan 16 at 19:59
I will have to look into using Python on a Synology NAS server. I know there are some limitations using these NAS servers with what can run on them and what cannot, so it is possible Python will.
– bbelden
Jan 16 at 20:04
Ah yes, I didn't account for the NAS running Python or not. But I'm sure you can do the same with any other scripting language. I'm sure at least one is running on the NAS or can be installed on the NAS.
– Tommiie
Jan 16 at 20:05
So it does appear that Python can be installed and run on Synology NAS servers. This script adds the underscore or random integer to the first or second file? I apologize I am not very familiar with Python scripting.
– bbelden
Jan 16 at 20:20
This script only prints the file name when a duplicate has been found. I don’t know what you want to do with the duplicates.
– Tommiie
Jan 16 at 20:22
|
show 2 more comments
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You can get a list of all the files in the current and sub folders using find . | sort -f
. The sort will ignore the case so that files with the same name (ignoring case) are next to each other, e.g.:
./folder/dir/something/test
./folder/dir/something/TEST
This should be passed to a script, e.g. Python, which can check each line with the next/previous and if there is a match, you can rename the file, adding understores, or something to it. This should not be too difficult to work out, I imagine.
Edit:
#!/usr/bin/env python3
import sys
if __name__ == "__main__":
old_line = ""
cur_line = ""
for line in sys.stdin:
old_line = cur_line
cur_line = line
if old_line.lower() == cur_line.lower():
print("Duplicate found!")
print("File: {}".format(cur_line))
I called it like this:
find ../ | sort -f | ./rename_files.py
Duplicate found!
File: ../c/modern-approach/test
As there is a second file in that directory called ../c/modern-approach/TEST
.
Thank you for the response. I like your idea of using the find command to get a list of the files in the directories and sub-directories.
– bbelden
Jan 16 at 19:59
I will have to look into using Python on a Synology NAS server. I know there are some limitations using these NAS servers with what can run on them and what cannot, so it is possible Python will.
– bbelden
Jan 16 at 20:04
Ah yes, I didn't account for the NAS running Python or not. But I'm sure you can do the same with any other scripting language. I'm sure at least one is running on the NAS or can be installed on the NAS.
– Tommiie
Jan 16 at 20:05
So it does appear that Python can be installed and run on Synology NAS servers. This script adds the underscore or random integer to the first or second file? I apologize I am not very familiar with Python scripting.
– bbelden
Jan 16 at 20:20
This script only prints the file name when a duplicate has been found. I don’t know what you want to do with the duplicates.
– Tommiie
Jan 16 at 20:22
|
show 2 more comments
You can get a list of all the files in the current and sub folders using find . | sort -f
. The sort will ignore the case so that files with the same name (ignoring case) are next to each other, e.g.:
./folder/dir/something/test
./folder/dir/something/TEST
This should be passed to a script, e.g. Python, which can check each line with the next/previous and if there is a match, you can rename the file, adding understores, or something to it. This should not be too difficult to work out, I imagine.
Edit:
#!/usr/bin/env python3
import sys
if __name__ == "__main__":
old_line = ""
cur_line = ""
for line in sys.stdin:
old_line = cur_line
cur_line = line
if old_line.lower() == cur_line.lower():
print("Duplicate found!")
print("File: {}".format(cur_line))
I called it like this:
find ../ | sort -f | ./rename_files.py
Duplicate found!
File: ../c/modern-approach/test
As there is a second file in that directory called ../c/modern-approach/TEST
.
Thank you for the response. I like your idea of using the find command to get a list of the files in the directories and sub-directories.
– bbelden
Jan 16 at 19:59
I will have to look into using Python on a Synology NAS server. I know there are some limitations using these NAS servers with what can run on them and what cannot, so it is possible Python will.
– bbelden
Jan 16 at 20:04
Ah yes, I didn't account for the NAS running Python or not. But I'm sure you can do the same with any other scripting language. I'm sure at least one is running on the NAS or can be installed on the NAS.
– Tommiie
Jan 16 at 20:05
So it does appear that Python can be installed and run on Synology NAS servers. This script adds the underscore or random integer to the first or second file? I apologize I am not very familiar with Python scripting.
– bbelden
Jan 16 at 20:20
This script only prints the file name when a duplicate has been found. I don’t know what you want to do with the duplicates.
– Tommiie
Jan 16 at 20:22
|
show 2 more comments
You can get a list of all the files in the current and sub folders using find . | sort -f
. The sort will ignore the case so that files with the same name (ignoring case) are next to each other, e.g.:
./folder/dir/something/test
./folder/dir/something/TEST
This should be passed to a script, e.g. Python, which can check each line with the next/previous and if there is a match, you can rename the file, adding understores, or something to it. This should not be too difficult to work out, I imagine.
Edit:
#!/usr/bin/env python3
import sys
if __name__ == "__main__":
old_line = ""
cur_line = ""
for line in sys.stdin:
old_line = cur_line
cur_line = line
if old_line.lower() == cur_line.lower():
print("Duplicate found!")
print("File: {}".format(cur_line))
I called it like this:
find ../ | sort -f | ./rename_files.py
Duplicate found!
File: ../c/modern-approach/test
As there is a second file in that directory called ../c/modern-approach/TEST
.
You can get a list of all the files in the current and sub folders using find . | sort -f
. The sort will ignore the case so that files with the same name (ignoring case) are next to each other, e.g.:
./folder/dir/something/test
./folder/dir/something/TEST
This should be passed to a script, e.g. Python, which can check each line with the next/previous and if there is a match, you can rename the file, adding understores, or something to it. This should not be too difficult to work out, I imagine.
Edit:
#!/usr/bin/env python3
import sys
if __name__ == "__main__":
old_line = ""
cur_line = ""
for line in sys.stdin:
old_line = cur_line
cur_line = line
if old_line.lower() == cur_line.lower():
print("Duplicate found!")
print("File: {}".format(cur_line))
I called it like this:
find ../ | sort -f | ./rename_files.py
Duplicate found!
File: ../c/modern-approach/test
As there is a second file in that directory called ../c/modern-approach/TEST
.
edited Jan 16 at 20:04
answered Jan 16 at 19:33
TommiieTommiie
1508
1508
Thank you for the response. I like your idea of using the find command to get a list of the files in the directories and sub-directories.
– bbelden
Jan 16 at 19:59
I will have to look into using Python on a Synology NAS server. I know there are some limitations using these NAS servers with what can run on them and what cannot, so it is possible Python will.
– bbelden
Jan 16 at 20:04
Ah yes, I didn't account for the NAS running Python or not. But I'm sure you can do the same with any other scripting language. I'm sure at least one is running on the NAS or can be installed on the NAS.
– Tommiie
Jan 16 at 20:05
So it does appear that Python can be installed and run on Synology NAS servers. This script adds the underscore or random integer to the first or second file? I apologize I am not very familiar with Python scripting.
– bbelden
Jan 16 at 20:20
This script only prints the file name when a duplicate has been found. I don’t know what you want to do with the duplicates.
– Tommiie
Jan 16 at 20:22
|
show 2 more comments
Thank you for the response. I like your idea of using the find command to get a list of the files in the directories and sub-directories.
– bbelden
Jan 16 at 19:59
I will have to look into using Python on a Synology NAS server. I know there are some limitations using these NAS servers with what can run on them and what cannot, so it is possible Python will.
– bbelden
Jan 16 at 20:04
Ah yes, I didn't account for the NAS running Python or not. But I'm sure you can do the same with any other scripting language. I'm sure at least one is running on the NAS or can be installed on the NAS.
– Tommiie
Jan 16 at 20:05
So it does appear that Python can be installed and run on Synology NAS servers. This script adds the underscore or random integer to the first or second file? I apologize I am not very familiar with Python scripting.
– bbelden
Jan 16 at 20:20
This script only prints the file name when a duplicate has been found. I don’t know what you want to do with the duplicates.
– Tommiie
Jan 16 at 20:22
Thank you for the response. I like your idea of using the find command to get a list of the files in the directories and sub-directories.
– bbelden
Jan 16 at 19:59
Thank you for the response. I like your idea of using the find command to get a list of the files in the directories and sub-directories.
– bbelden
Jan 16 at 19:59
I will have to look into using Python on a Synology NAS server. I know there are some limitations using these NAS servers with what can run on them and what cannot, so it is possible Python will.
– bbelden
Jan 16 at 20:04
I will have to look into using Python on a Synology NAS server. I know there are some limitations using these NAS servers with what can run on them and what cannot, so it is possible Python will.
– bbelden
Jan 16 at 20:04
Ah yes, I didn't account for the NAS running Python or not. But I'm sure you can do the same with any other scripting language. I'm sure at least one is running on the NAS or can be installed on the NAS.
– Tommiie
Jan 16 at 20:05
Ah yes, I didn't account for the NAS running Python or not. But I'm sure you can do the same with any other scripting language. I'm sure at least one is running on the NAS or can be installed on the NAS.
– Tommiie
Jan 16 at 20:05
So it does appear that Python can be installed and run on Synology NAS servers. This script adds the underscore or random integer to the first or second file? I apologize I am not very familiar with Python scripting.
– bbelden
Jan 16 at 20:20
So it does appear that Python can be installed and run on Synology NAS servers. This script adds the underscore or random integer to the first or second file? I apologize I am not very familiar with Python scripting.
– bbelden
Jan 16 at 20:20
This script only prints the file name when a duplicate has been found. I don’t know what you want to do with the duplicates.
– Tommiie
Jan 16 at 20:22
This script only prints the file name when a duplicate has been found. I don’t know what you want to do with the duplicates.
– Tommiie
Jan 16 at 20:22
|
show 2 more comments