Last active
January 12, 2026 16:54
-
-
Save parties/90cdf35f9a3d05bea6df76dc83a69641 to your computer and use it in GitHub Desktop.
rename all *.js files containing React markup to *.jsx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # finds all *.js files that have either `</` or `/>` tags in them and renames them to *.jsx | |
| find ./src -type f -name '*.js' -not -name '*.jsx' -not -name '*.ejs' -exec bash -c 'grep -l -E "</|/>" "$0"' {} \; -exec bash -c 'mv "$0" "${0%.js}.jsx"' {} \; |
Us poor windows users can use the following powershell command:
Get-ChildItem -Path ./src -Filter *.js -Recurse | Where-Object { $_.Name -notlike '*.jsx' -and $_.Name -notlike '*.ejs' } | ForEach-Object { $fileContent = Get-Content $_.FullName if ($fileContent -match '</|/>') { $newFileName = $_.FullName -replace '\.js$', '.jsx' Rename-Item -Path $_.FullName -NewName $newFileName } }(The code above is ai generated but worked flawlessly for me. The matching logic should be the same as in the original bash script.)
works fine thanks mate
I have some test suite files that contain string HTML, but not React/JSX and they were caught up in this. Just be careful where you run this script
expect(noteContent).toBe('<p>Hello World</p>');
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks