Sponsored Content
Top Forums Shell Programming and Scripting Rename all ".JPG" files to ".jpg" under all subfolders... Post 302416202 by alister on Sunday 25th of April 2010 02:26:39 PM
Old 04-25-2010
Quote:
Originally Posted by verdepollo
Another way:

Code:
find /your/folder -type f | sed 's/\(.*\)\.JPG/mv \1.JPG \1.jpg/' | sh

That approach comes with hefty filename limitations (which may or may not be of importance to the original poster, but I'll mention them for completeness):

- Filenames cannot contain newlines (when reading find's output, it's impossible to distinguish between two filenames and one with an embedded newline. Unfixable.
- Filenames cannot contain any of the other shell-special characters (space, tab, backslash, single-quote, double-quote, semicolon, ampersand, pipe, >, <, etc). Possibly fixable, by backslash escaping every such character, but it would be a brittle solution.

Unrelatedly, either find should be constrained to match only files ending in ".JPG" or the matching regular expression in sed should be anchored to the end of the line, with "JPG$". Otherwise, mid-filename ".JPG" sequences will match filenames not ending in ".JPG".

Regards,
Alister

---------- Post updated at 02:26 PM ---------- Previous update was at 01:52 PM ----------

If the solution must handle every allowable filename, I would suggest:
Code:
find . -type f -name \*.JPG -exec ./mvjpg.sh {} +

Where mvjpg.sh is:
Code:
#!/bin/sh

for f; do
    mv "$f" "${f%.JPG}.jpg"
done


Obviously, you'll need to adjust the path to the shell script in the -exec primary to match its actual location on your system, if it's not on your $PATH.

Regards,
Alister

Last edited by alister; 04-25-2010 at 04:08 PM..
 

9 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`"

Hi Friends, Can any of you explain me about the below line of code? mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'` Im not able to understand, what exactly it is doing :confused: Any help would be useful for me. Lokesha (4 Replies)
Discussion started by: Lokesha
4 Replies

2. Shell Programming and Scripting

cat $como_file | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g'

hi All, cat file_name | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g' Can this be done by using sed or awk alone (4 Replies)
Discussion started by: harshakusam
4 Replies

3. Shell Programming and Scripting

"Join" or "Merge" more than 2 files into single output based on common key (column)

Hi All, I have working (Perl) code to combine 2 input files into a single output file using the join function that works to a point, but has the following limitations: 1. I am restrained to 2 input files only. 2. Only the "matched" fields are written out to the "matched" output file and... (1 Reply)
Discussion started by: Katabatic
1 Replies

4. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

5. Solaris

The slices "usr", "opt", "tmp" disappeared!!! Help please.

The system don't boot. on the screen appears following: press enter to maintenance (or type CTRL-D to continue)...I checked with format command. ... the slices "0-root","1-swap","2-backup" exist. ...the slises "3-var","6-usr" -unassigned. :( (16 Replies)
Discussion started by: wolfgang
16 Replies

6. UNIX for Dummies Questions & Answers

Using "mailx" command to read "to" and "cc" email addreses from input file

How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address and column 3 contains “cc” e-mail address to include with same email. Sample input file, email.txt Below is an sample code where... (2 Replies)
Discussion started by: asjaiswal
2 Replies

7. Shell Programming and Scripting

Delete all log files older than 10 day and whose first string of the first line is "MSH" or "<?xml"

Dear Ladies & Gents, I have a requirement to delete all the log files in /var/log/test directory that are older than 10 days and their first line begin with "MSH" or "<?xml" or "FHS". I've put together the following BASH script, but it's erroring out: for filename in $(find /var/log/test... (2 Replies)
Discussion started by: Hiroshi
2 Replies

8. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies

9. AIX

Apache 2.4 directory cannot display "Last modified" "Size" "Description"

Hi 2 all, i have had AIX 7.2 :/# /usr/IBMAHS/bin/apachectl -v Server version: Apache/2.4.12 (Unix) Server built: May 25 2015 04:58:27 :/#:/# /usr/IBMAHS/bin/apachectl -M Loaded Modules: core_module (static) so_module (static) http_module (static) mpm_worker_module (static) ... (3 Replies)
Discussion started by: penchev
3 Replies
VIS(1)							    BSD General Commands Manual 						    VIS(1)

NAME
vis -- display non-printable characters in a visual format SYNOPSIS
vis [-cbflnostw] [-F foldwidth] [file ...] DESCRIPTION
The vis utility is a filter for converting non-printable characters into a visual representation. It differs from 'cat -v' in that the form is unique and invertible. By default, all non-graphic characters except space, tab, and newline are encoded. A detailed description of the various visual formats is given in vis(3). The options are as follows: -b Turns off prepending of backslash before up-arrow control sequences and meta characters, and disables the doubling of backslashes. This produces output which is neither invertible or precise, but does represent a minimum of change to the input. It is similar to ``cat -v''. -c Request a format which displays a small subset of the non-printable characters using C-style backslash sequences. -F Causes vis to fold output lines to foldwidth columns (default 80), like fold(1), except that a hidden newline sequence is used, (which is removed when inverting the file back to its original form with unvis(1)). If the last character in the encoded file does not end in a newline, a hidden newline sequence is appended to the output. This makes the output usable with various editors and other utilities which typically do not work with partial lines. -f Same as -F. -l Mark newlines with the visible sequence '$', followed by the newline. -n Turns off any encoding, except for the fact that backslashes are still doubled and hidden newline sequences inserted if -f or -F is selected. When combined with the -f flag, vis becomes like an invertible version of the fold(1) utility. That is, the output can be unfolded by running the output through unvis(1). -o Request a format which displays non-printable characters as an octal number, ddd. -s Only characters considered unsafe to send to a terminal are encoded. This flag allows backspace, bell, and carriage return in addi- tion to the default space, tab and newline. -t Tabs are also encoded. -w White space (space-tab-newline) is also encoded. SEE ALSO
unvis(1), vis(3) HISTORY
The vis command appeared in 4.4BSD. BUGS
Due to limitations in the underlying vis(3) function, the vis utility does not recognize multibyte characters, and thus may consider them to be non-printable when they are in fact printable (and vice versa). BSD
June 25, 2004 BSD
All times are GMT -4. The time now is 04:41 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy