These Are The Bash Shell Commands That Stand Between Me And Insanity
These Are The Bash Shell Commands That Stand Between Me And Insanity
I will not profess to be a bash shell wizard… but I have managed to scour some pretty helpful little scripts from Stack Overflow and modify them to suit my needs.
All of these commands are for Ubuntu/WSL … some may work in other scenarios but I can’t guarantee it.
As of this writing I have about 120 more bash snippets I regularly use… I am not writing the whole article right now but I wanted to get it started so I feel obligated to finish it!
Recursive Unzip followed by recursive delete zip:
This file contains 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
#!/bin/bash | |
sudo apt install unzip | |
find . -name "*.zip" | while read filename; do unzip -o -d "`dirname "$filename"`" "$filename"; done; | |
# then delete the zip files | |
find . -name "*.zip" -type f -print -delete |
Remove spaces from file and folder names
This file contains 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
#!bin/bash | |
sudo apt install rename | |
find . -name "* *" -type d | rename 's/ /_/g' # do the directories first | |
find . -name "* *" -type f | rename 's/ /_/g' |
Find and replace in string/folder names
find . -type f -exec rename ‘s/string1/string2/g’ {} +
Remove numbers from file names
find $dir -type f | sed ‘s|\(.*/\)[^A-Z]*\([A-Z].*\)|mv \”&\” \”\1\2\”|’ | sh
Delete files within size range ( for when GitHub cries about file size):
find . -size +386b -a -size -390b -exec rm -f {} \;
Create symbolic link to working directory
ln -s “$(pwd)” ~/mylink
Remove any traces of a git repository:
find . \( -name “.git” -o -name “.gitignore” -o -name “.gitmodules” -o -name “.gitattributes” \) -exec rm -rf — {} +
Replace spaces in filenames with underscores
for file in *; do mv “$file” `echo $file | tr ‘ ‘ ‘_’` ; done
Remove Empty Files and Folders:
find . -empty -type f -print -delete
find . -empty -type d -print -delete
or
find . -depth -exec rmdir {} \;
Autogenerate a navigable HTML directory for all the files in the current working directory you exicute the script in:
This file contains 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
#!/bin/sh | |
#find ./ | grep -i "\.*$" >files | |
find. / |sed - E - e 's/([^ ]+[ ]+){8}//' | grep - i "\.*$" > files | |
listing = "files" | |
out = "" | |
html = "sitemap.html" | |
out = "basename $out.html" | |
html = "sitemap.html" | |
cmd () | |
{ | |
echo ' <!DOCTYPE html>' | |
echo '<html>' | |
echo '<head>' | |
echo ' <meta http-equiv="Content-Type" content="text/html">' | |
echo ' <meta name="Author" content="Bryan Guner">' | |
echo | |
'<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-dark.css">' | |
echo | |
' <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/bgoonz/GIT-CDN-FILES/mdn-article.css">' | |
echo | |
' <script async defer src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>' | |
echo " <TITLE> directory </TITLE> </head>" | |
echo "" | |
echo '</head>' | |
echo '<body>' | |
echo "" | |
#################### continue with the HTML stuff: | |
echo "" | |
echo "" | |
echo "<ul>" | |
awk '{print "<li><a href=\""$1"\">",$1," </li>"}' $listing | |
#awk '{print "<li>"}; | |
#{print " <a href=\""$1"\">",$1,"</a></li> "}' \ $listing | |
echo "" | |
echo "</ul>" | |
echo "</body>" | |
echo "</html>" | |
} | |
cmd $listing-- sort = extension >> $html |
For more content… go to :
This file contains 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
#!/bin/sh | |
#find ./ | grep -i "\.*$" >files | |
find. / |sed - E - e 's/([^ ]+[ ]+){8}//' | grep - i "\.*$" > files | |
listing = "files" | |
out = "" | |
html = "sitemap.html" | |
out = "basename $out.html" | |
html = "sitemap.html" | |
cmd () | |
{ | |
echo ' <!DOCTYPE html>' | |
echo '<html>' | |
echo '<head>' | |
echo ' <meta http-equiv="Content-Type" content="text/html">' | |
echo ' <meta name="Author" content="Bryan Guner">' | |
echo | |
'<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-dark.css">' | |
echo | |
' <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/bgoonz/GIT-CDN-FILES/mdn-article.css">' | |
echo | |
' <script async defer src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>' | |
echo " <TITLE> directory </TITLE> </head>" | |
echo "" | |
echo '</head>' | |
echo '<body>' | |
echo "" | |
#################### continue with the HTML stuff: | |
echo "" | |
echo "" | |
echo "<ul>" | |
awk '{print "<li><a href=\""$1"\">",$1," </li>"}' $listing | |
#awk '{print "<li>"}; | |
#{print " <a href=\""$1"\">",$1,"</a></li> "}' \ $listing | |
echo "" | |
echo "</ul>" | |
echo "</body>" | |
echo "</html>" | |
} | |
cmd $listing-- sort = extension >> $html |