File Manipulation
cp -v top-words-2.sh top-words-3.sh
cp -v top-words-{2,3}.sh
zip -r zipfilename.zip folder_name
Search
grep -iRl "str to search" ./
-i - ignore text case
-R - recursively search files in subdirectories.
-l - show file names instead of file contents portions.
grep -rnw '/path/to/somewhere/' -e 'pattern'
# only search through those files which have .c or .h extensions
grep --include=\*.{c,h} -rnw '/path/to/somewhere/' -e "pattern"
# exclude searching all the files ending with .o extension
grep --exclude=*.o -rnw '/path/to/somewhere/' -e "pattern"
# exclude a particular directory(ies) through --exclude-dir parameter. For example, this will exclude the dirs dir1/, dir2/ and all of them matching *.dst/
grep --exclude-dir={dir1,dir2,*.dst} -rnw '/path/to/somewhere/' -e "pattern"
# today's file at current directory with certain regex
find . -maxdepth 1 -mtime 0 -name "*hello*"
# change multiple file names, e.g., *.txt files to *.text
for f in *.txt;
do mv -- "$f" "$(basename "$f" .txt).text"
done
# find and remove files
# first command remove directories as well
find . -name "FILE-TO-FIND" -exec rm -rf {} \;
# second command only removes files
find . -type f -name "FILE-TO-FIND" -exec rm -f {} \;
# how to delete all files with a certain extension in current directory & subdirectories?
check only: find . -name "*.bak" -type f
delete as well: find . -name "*.bak" -type f -delete
# how to delete files that are not belonging to a certain pattern?
find . -type f ! -name '*.txt' -delete
# search process id using certain port (e.g., 8000)
lsof -ti:8000
netstat -tulpn | grep ':443'
Others
# start default vino server in Ubuntu
/usr/lib/vino/vino-server
# clean trash bin
sudo apt install trash-cli
trash-empty
# get full permission to a file/folder
sudo chmod a+rwx /path/to/file
sudo chmod -R a+rwx /path/to/folder
# check status/start/stop/restart a service
sudo systemctl status [service name]
sudo systemctl start [service name]
sudo systemctl stop [service name]
sudo systemctl restart [service name]