1

I need to rename all files with .js extension, but names of files can vary, for example:

rootDirectory
--firstDirectory
----first.js
--secondFileDirectory
----second.js
--thirdDirectory
----third.js

Needs to be renamed to

rootDirectory
--firstDirectory
----newName.js
--secondFileDirectory
----newName.js
--thirdDirectory
----newName.js

Is there a way to do it?

I'm using Ubuntu 14.04

2
  • What operating system and version are you using? Commented Aug 19, 2016 at 14:18
  • @StephenHarris Harris Ubuntu 14.04 Commented Aug 19, 2016 at 14:19

2 Answers 2

4

Ububtu 14 has a version of find that has the -execdir option, so this becomes relatively simple:

find . -name '*.js' -execdir mv -i {} newName.js \;

For example, I have this tree:

./A
./A/first.js
./B
./B/second.js

I run the command

$ find . -name '*.js' -execdir mv -i {} newName.js \;

The resulting tree:

./A
./A/newName.js
./B
./B/newName.js
0
0

Based on Perl rename, assumes pwd is rootDirectory:

rename 's|(.*/).*\.js|$1newName.js|' */*

or

rename 's|.*/\K.*\.js|newName.js|' */*
  • use rename -n if you want to check how the renaming will happen

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.