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 ():
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?
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)
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)
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)
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)
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)
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)
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)
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
LEARN ABOUT OPENSOLARIS
opendir
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)