43

Trying to perform a recursive chmod on all the .sh files in a directory to make them executable

Arunava
  • 573
  • 1
  • 4
  • 10

2 Answers2

62

To make this possible you can use the find command and search for all files with a .sh extension and then run the chmod command on each one found:

find /directory/of/interest/ -type f -iname "*.sh" -exec chmod +x {} \;

Information:

  1. -type f: Normal files only (skip directories, symlinks, named pipes and sockets, and the special files found in /dev)
  2. -iname: Ignore case in the name
  3. "*.sh": Globbing, telling the find command to search for files with ".sh" extension
  4. -exec chmod +x {}: This tells the find command to carry out a chmod command on each found file. Making each executable
  5. \;: Indicating end of command
Eliah Kagan
  • 119,640
George Udosen
  • 37,534
4
chmod u+x /dir_of_interest/**/*.sh

Credit to: https://www.commandlinefu.com/commands/view/11936/recursive-chmod-all-.sh-files-within-the-current-directory

rainabba
  • 286