
Would you want to perform some custom action on each found shell script, you could do that with another -exec in place of the -print in the find commands above, but it would also be possible to do find. Please note that the results include the path. The command contains the exact name for the file you are searching for. To look for a specific file, run the following command from the root (/). The output on macOS is otherwise similar to that of a Linux system. Find specific files by name or extension. Note that on macOS, you would have to use file -bI instead of file -bi because of reasons (the -i option does something quite different). The common bit is the /x-shellscript substring. While on systems with a slightly older variant of the file utility, it may be application/x-shellscript For a shell script on Linux (and most other systems), this would be something like text/x-shellscript charset=us-ascii The file -bi command will output the MIME type of the file. If the file was found to be a shell script, the find command will proceed to output the file's pathname (the -print at the end, which could also be replaced by some other action). If the output does not contain that string, it exits with a non-zero exit status which causes find to continue immediately with the next file. The reference argument is normally the name of a file (and one of its timestamps is used for the comparison) but it may also be a string describing an absolute time.

This script runs file -bi on the found file and exits with a zero exit status if the output of that command contains the string /x-shellscript. From man find:-newerXY reference Compares the timestamp of the current file with reference. The find command above will find all regular files in or below the current directory, and for each such file call a short in-line shell script. ]' bash \ -printĪdd -name sunrise before the -exec if you wish to only detect scripts with that name. type f -exec sh -c 'Ĭase $( file -bi "$1" ) in (*/x-shellscript*) exit 0 esac Using file with find to detect the MIME type of regular files, and use that to only find shell scripts: find. These types of data may however be distinguished by the file utility, which looks at particular signatures within the files themselves to determine type of the file contents.Ī common way to label the different types of data files is by their MIME type, and file is able to determine the MIME type of a file. The find utility can not by itself distinguish between a "shell script", "JPEG image file" or any other type of regular file. These are the type of files that find can filter on with its -type option.

"File types" on a Unix system are things like regular files, directories, named pipes, character special files, symbolic links etc.
