Renaming files using find
Im trying to rename a few files with the .dist extension. Im trying - hivemind# find . -name '*.dist' -exec cp {} `basename {} .dist` \; And Im getting - cp: ./html.php.dist and ./html.php.dist are identical (not copied). cp: ./horde.php.dist and ./horde.php.dist are identical (not copied). cp: ./motd.php.dist and ./motd.php.dist are identical (not copied). cp: ./mime_mapping.php.dist and ./mime_mapping.php.dist are identical (not copied). cp: ./prefs.php.dist and ./prefs.php.dist are identical (not copied). cp: ./registry.php.dist and ./registry.php.dist are identical (not copied). cp: ./lang.php.dist and ./lang.php.dist are identical (not copied). cp: ./mime_drivers.php.dist and ./mime_drivers.php.dist are identical (not copied). What is wrong with the command that I issued. Thanks ___ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to [EMAIL PROTECTED]
Re: Renaming files using find
On 2004-08-31 11:15, Gerard Samuel [EMAIL PROTECTED] wrote: Im trying to rename a few files with the .dist extension. Im trying - hivemind# find . -name '*.dist' -exec cp {} `basename {} .dist` \; And Im getting - cp: ./html.php.dist and ./html.php.dist are identical (not copied). cp: ./horde.php.dist and ./horde.php.dist are identical (not copied). cp: ./motd.php.dist and ./motd.php.dist are identical (not copied). cp: ./mime_mapping.php.dist and ./mime_mapping.php.dist are identical (not copied). cp: ./prefs.php.dist and ./prefs.php.dist are identical (not copied). cp: ./registry.php.dist and ./registry.php.dist are identical (not copied). cp: ./lang.php.dist and ./lang.php.dist are identical (not copied). cp: ./mime_drivers.php.dist and ./mime_drivers.php.dist are identical (not copied). What is wrong with the command that I issued. The basename command gets expanded by the shell you use *BEFORE* find has a change to run. You can try playing tricks with escaping the backquotes, which is probably going to result very quickly in ugliness like \\\`foo\\\` or you can use find to generate a list of filenames which will be processed by the rest of the command-line to spit out the rename commands, and feed them to sh(1) for execution, i.e.: $ ls -l total 0 -rw-rw-r-- 1 keramida wheel - 0 Aug 31 18:33 koko.dist -rw-rw-r-- 1 keramida wheel - 0 Aug 31 18:33 lala.dist $ find . -name \*.dist | \ awk '{ printf mv \%s\ `basename \%s\ .dist`\n,$0,$0; }' mv ./lala.dist `basename ./lala.dist .dist` mv ./koko.dist `basename ./koko.dist .dist` $ find . -name \*.dist | \ awk '{ printf mv \%s\ `basename \%s\ .dist`\n,$0,$0; }' | sh $ ls -l total 0 -rw-rw-r-- 1 keramida wheel - 0 Aug 31 18:33 koko -rw-rw-r-- 1 keramida wheel - 0 Aug 31 18:33 lala ___ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to [EMAIL PROTECTED]
Re: Renaming files using find
Giorgos Keramidas wrote: On 2004-08-31 11:15, Gerard Samuel [EMAIL PROTECTED] wrote: Im trying to rename a few files with the .dist extension. Im trying - hivemind# find . -name '*.dist' -exec cp {} `basename {} .dist` \; And Im getting - cp: ./html.php.dist and ./html.php.dist are identical (not copied). cp: ./horde.php.dist and ./horde.php.dist are identical (not copied). cp: ./motd.php.dist and ./motd.php.dist are identical (not copied). cp: ./mime_mapping.php.dist and ./mime_mapping.php.dist are identical (not copied). cp: ./prefs.php.dist and ./prefs.php.dist are identical (not copied). cp: ./registry.php.dist and ./registry.php.dist are identical (not copied). cp: ./lang.php.dist and ./lang.php.dist are identical (not copied). cp: ./mime_drivers.php.dist and ./mime_drivers.php.dist are identical (not copied). What is wrong with the command that I issued. The basename command gets expanded by the shell you use *BEFORE* find has a change to run. You can try playing tricks with escaping the backquotes, which is probably going to result very quickly in ugliness like \\\`foo\\\` or you can use find to generate a list of filenames which will be processed by the rest of the command-line to spit out the rename commands, and feed them to sh(1) for execution, i.e.: $ ls -l total 0 -rw-rw-r-- 1 keramida wheel - 0 Aug 31 18:33 koko.dist -rw-rw-r-- 1 keramida wheel - 0 Aug 31 18:33 lala.dist $ find . -name \*.dist | \ awk '{ printf mv \%s\ `basename \%s\ .dist`\n,$0,$0; }' mv ./lala.dist `basename ./lala.dist .dist` mv ./koko.dist `basename ./koko.dist .dist` $ find . -name \*.dist | \ awk '{ printf mv \%s\ `basename \%s\ .dist`\n,$0,$0; }' | sh $ ls -l total 0 -rw-rw-r-- 1 keramida wheel - 0 Aug 31 18:33 koko -rw-rw-r-- 1 keramida wheel - 0 Aug 31 18:33 lala Thanks for the explanation... ___ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to [EMAIL PROTECTED]