I am trying to manipulate the filename from the find command:
find . -name "*.xib" -exec echo '{}' ';'
For example, this might print:
./Views/Help/VCHelp.xib
I would like to make it:
./Views/Help/VCHelp.strings
What I tried:
find . -name "*.xib" -exec echo ${'{}'%.*} ';'
But, the ‘{}’ is not being recognized as a string or something…
I also tried the following:
find . -name "*.xib" -exec filename='{}' ";" -exec echo ${filename%.*} ";"
But it is trying to execute a command called “filename” instead of assigning the variable:
find: filename: No such file or directory
You can’t use Parameter Expansion with literal string. Try to store it in a variable first:
-execsees first argument after it as the command, therefore you can’t simply give itfilename='{}'becausefinddoesn’t useshto execute what you give it. If you want to run some shell stuff, you need to useshorbashto wrap up.Or use
sed: