Sponsored Content
Top Forums Shell Programming and Scripting Validating uppercase/lowercase of user input with perl compared to unix folders Post 302588546 by Furou on Monday 9th of January 2012 09:58:05 AM
Old 01-09-2012
Validating uppercase/lowercase of user input with perl compared to unix folders

Hi,

I need to copy files from a source directory to a destination directory in unix.
I'm using the file::copy for the actual copy.

The problem is that the source and dest directories are supplied by different users, who might type the name of the directories in various combinations of lower case and upper case. This would be easy to solve, except no one kept here a naming standard, so the actual directories in unix can also be different combinations of uc and lc.

I was told that in most paths, only the two last directories would be in random case (that is: /Bla/Bla/Bla/random case/random case). I got around that by splitting the paths, taking the last two vars, then going over the directories with opendir and comparing everything under the directory to a non-case regex of the var I need (Smilie):
Code:
$slash = "/";
@split_path = split($slash,$dstpath);
$last = $split_path[$#arr];
$before_last = $split_path[$#arr-1];
pop @split_path;
pop @split_path;
$path = join($slash,@split_path);
opendir (DIR,$path);
while ($dir_name = readdir(DIR)) {
     $path = $path.$slash.$dir_name if ($dir_name =~ /^$before_last$/i);
}
closedir (DIR);
opendir (DIR,$path);
while ($dir_name = readdir(DIR)) {
     $path = $path.$slash.$dir_name if ($dir_name =~ /^$last$/i);
}

And this works... but what do I do in the case the folders before those two are also random case? Is there a simple recursive way to tackle this?

Also would this check:
Code:
&& (-d $dir_name)

work to make sure I found a directory and not a file?

Many thanks Smilie
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

uppercase to lowercase

Greetings & Happy New Years To All! A client of mine FTP'ed their files up to the server and it all ended up being in UPPERCASE when it all should be in lowercase. Is there a builtin command or a script anyone knows of that will automagically convert all files to lowercase? Please advise asap... (4 Replies)
Discussion started by: webex
4 Replies

2. Shell Programming and Scripting

Validating user input is not blank

Trying to create a script in BASH that would ask the user to enter another user name making sure the input is not blank before they hit enter then to check the home directory of that user does exist, I have the check folder sorted it's just the loop to make sure the user has entered chars (5 Replies)
Discussion started by: MBN
5 Replies

3. AIX

Lowercase to Uppercase

Inside a script I have 2 variables COMP=cy and PT=t. further down the same script I require at the same line to call those 2 variables the first time uppercase and after lowercase ${COMP}${PT}ACE,${COMP}${PT}ace. Can somebody help me Thanks in advance George Govotsis (7 Replies)
Discussion started by: ggovotsis
7 Replies

4. UNIX for Dummies Questions & Answers

uppercase to lowercase

i have no variable and no file i just want to convert AJIT to ajit with some command in UNIX can anybody help (4 Replies)
Discussion started by: ajit.yadav83
4 Replies

5. Shell Programming and Scripting

indentation and lowercase to uppercase

hi, i need to write a bash script that does two things. the program will take from the command line a file name, which is a C code, and an integer, which is the size of my indentation i would then have to indent every nested code by the number of columns provided by the user in the... (1 Reply)
Discussion started by: kratos.
1 Replies

6. UNIX Desktop Questions & Answers

Unix: lowercase to uppercase

I just started to learn unix... and i needed to make a basic script. i need to 1. read a file (.txt) 2. count the words of EVERY sentece 3. sentences with odd number of words need to be converted into lowercase sentences with even number of words need to be converted into uppercase ... (6 Replies)
Discussion started by: chilli1988
6 Replies

7. UNIX for Dummies Questions & Answers

UPPERCASE to lowercase

Hi All, i have a file and i want to convert all uppercase letters to lowercase letters which are in my file. how can i do this. Thanx (3 Replies)
Discussion started by: temhem
3 Replies

8. UNIX for Dummies Questions & Answers

Validating user input

I'm trying to set up a script that takes user input and validates that the user input was entered correctly. So far I have this: while : do echo "Please enter your name." read NAME if then echo "You have not entered a name." echo... (13 Replies)
Discussion started by: fufaso
13 Replies

9. Shell Programming and Scripting

how to convert user input to uppercase

Hi, how to convert user input (lowercase) to uppercase in the dos batch file ? echo. SET /p user1=Enter username: SET user2=%user1%V echo. echo %user1% echo. echo %user2% echo. With Regards (7 Replies)
Discussion started by: milink
7 Replies

10. Shell Programming and Scripting

Uppercase to lowercase

Hello, I have a list of files in a directory whose names are all in uppercasse, including the file format for eg *.MP3 . I would like to convert these to the normal way we write it ie ABC.MP3 to be converted to Abc.mp3 . I know that this can be done manually by using a lot of "mv" or rename... (6 Replies)
Discussion started by: ajayram
6 Replies
opendir(3C)						   Standard C Library Functions 					       opendir(3C)

NAME
opendir, fdopendir - open directory SYNOPSIS
#include <sys/types.h> #include <dirent.h> DIR *opendir(const char *dirname); DIR *fdopendir(int fildes); DESCRIPTION
The opendir() function opens a directory stream corresponding to the directory named by the dirname argument. The fdopendir() function opens a directory stream for the directory file descriptor fildes. The directory file descriptor should not be used or closed following a successful function call, as this might cause undefined results from future operations on the directory stream obtained from the call. Use closedir(3C) to close a directory stream. The directory stream is positioned at the first entry. If the type DIR is implemented using a file descriptor, applications will only be able to open up to a total of {OPEN_MAX} files and directories. A successful call to any of the exec functions will close any directory streams that are open in the calling process. See exec(2). RETURN VALUES
Upon successful completion, opendir() and fdopendir() return a pointer to an object of type DIR. Otherwise, a null pointer is returned and errno is set to indicate the error. ERRORS
The opendir() function will fail if: EACCES Search permission is denied for the component of the path prefix of dirname or read permission is denied for dirname. ELOOP Too many symbolic links were encountered in resolving path. ENAMETOOLONG The length of the dirname argument exceeds {PATH_MAX}, or a path name component is longer than {NAME_MAX} while {_POSIX_NO_TRUNC} is in effect. ENOENT A component of dirname does not name an existing directory or dirname is an empty string. ENOTDIR A component of dirname is not a directory. The fdopendir() function will fail if: ENOTDIR The file descriptor fildes does not reference a directory. The opendir() function may fail if: EMFILE There are {OPEN_MAX} file descriptors currently open in the calling process. ENAMETOOLONG Pathname resolution of a symbolic link produced an intermediate result whose length exceeds PATH_MAX. ENFILE Too many files are currently open on the system. USAGE
The opendir() and fdopendir() functions should be used in conjunction with readdir(3C), closedir(3C) and rewinddir(3C) to examine the con- tents of the directory (see the EXAMPLES section in readdir(3C)). This method is recommended for portability. ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Interface Stability |opendir() is Standard; | | |fdopendir() is Evolving | +-----------------------------+-----------------------------+ |MT-Level |Safe | +-----------------------------+-----------------------------+ SEE ALSO
lstat(2), symlink(2), closedir(3C), readdir(3C), rewinddir(3C), scandir(3C), attributes(5) SunOS 5.11 26 Jun 2007 opendir(3C)
All times are GMT -4. The time now is 10:26 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy