39 lines
		
	
	
	
		
			1.1 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
	
		
			1.1 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
| [[!comment format=mdwn
 | |
|  username="mhameed"
 | |
|  ip="82.32.202.53"
 | |
|  subject="problems with spaces in filenames"
 | |
|  date="Wed Sep  5 09:38:56 BST 2012"
 | |
|  content="""
 | |
| 
 | |
| Spaces, and other special chars can make filename handeling ugly.
 | |
| If you don't have a restriction on keeping the exact filenames, then 
 | |
| it might be easiest just to get rid of the problematic chars.
 | |
| 
 | |
|     #!/bin/bash
 | |
| 
 | |
|     function process() {
 | |
|         dir="$1"
 | |
|         echo "processing $dir"
 | |
|         pushd $dir >/dev/null 2>&1
 | |
| 
 | |
|         for fileOrDir in *; do
 | |
|             nfileOrDir=`echo "$fileOrDir" | sed -e 's/\[//g' -e 's/\]//g' -e 's/ /_/g' -e "s/'//g" `
 | |
|             if [ "$fileOrDir" != "$nfileOrDir" ]; then
 | |
|                 echo renaming $fileOrDir to $nfileOrDir
 | |
|                 git mv "$fileOrDir" "$nfileOrDir"
 | |
|             else
 | |
|                 echo "skipping $fileOrDir, no need to rename."
 | |
|             fi
 | |
|         done
 | |
| 
 | |
|         find ./ -mindepth 1 -maxdepth 1 -type d | while read d; do
 | |
|         process "$d"
 | |
|         done
 | |
|         popd >/dev/null 2>&1
 | |
|     }
 | |
| 
 | |
|     process .
 | |
| 
 | |
| Maybe you can run something like this before checking for duplicates.
 | |
| 
 | |
| """]]
 | 
