This is a mac.
The contents of a directory are as follows:
1_X.jpg
2.jpg
3.jpg
4_X.jpg
5.jpg
.
.
.
The file name is always ".jpg" or "_X.jpg".
I would like to make all of these ***_X.jpg.
"In other words, I would like to give ""_X"" to all the file names that do not have ""_X"" on them."
What should I do?
unix
You can also use find
to find and rename the appropriate file.
find.!-name*_X.jpg-type f-execdir sh-c'mv "$1" "${1%.jpg}_X.jpg"'_{}\;
How about this shellscript
?
#!/bin/sh
while [-n "$1" ]
do
fullname = $1
extension=${fullname##*.}
filename = ${fullname%.*}
suffix = ${filename##*_}
if ["$suffix"!="X"]; then
mv${filename}"."${extension}${filename}"_X."${extension}
fi
shift
done
The answer from @metropolis in the comment may be sufficient, but
Save the above to a file, try saving it to the same directory as the jpeg file, execute the command chmod+x755 filename
, and then try ./filename*.jpg
.You will get the result of your expectations.
Once the execution is confirmed, from Terminal
, click
mkdir-p/usr/local/bin
sudo cp filename /usr/local/bin
Run two commands to move the command to an executable location that does not pollute the system.
Also, if your shell is bash (this shell is usually used)
PATH=/usr/local/bin:$PATH
Look for the line and add it if you don't have one.
Now, the next time you open Terminal
, you can execute the command to add _x
from any directory if the filename *.jpg
does not have _X
at the end of the jpeg file.
shift
from while [-n "$1"] to done
on the previous line.
It handles arguments sequentially and can be applied, so there is no loss in remembering them.
© 2024 OneMinuteCode. All rights reserved.