In a directory hierarchy that contains multiple file types, copy only the .pdf files (in this case) and move them to a different directory, without the original directory hierarchy.
Use: find . ! -readable -prune or more generally find ! -readable -prune -o -print to avoid "Permission denied" AND do NOT suppress (other) error messages AND get exit status 0 ("all files are processed successfully") Works with: find (GNU findutils) 4.4.2. Background: The -readable test matches readable files. The ! operator returns true, when test is false. And ! -readable matches not readable directories (&files). The -prune action does not descend into directory. ! -readable -prune can be translated to: if directory is not readable, do not descend into it. The -readable test takes into account access control lists and other permissions artefacts which the -perm test ignores. For find versions without -readable test, you can check permissions: find . ! -perm -g+r,u+r,o+r -prune Adapted from stackoverflow: http://stackoverflow.com/questions/762348/how-can-i-exclude-all-permission-denied-messages-from-find
Combs through your home directory and destroys all Vagrant boxes.
Used $(pwd) to get full path find to list files xargs to pass args bash to parse variables
It's always a good idea to check the output of find without -delete before hand to make sure the results are as you expect. If you want to see where the broken symlinks point, use
find . -xtype l -exec ls -l {} \+
simulation test to see which files would be deleted: find . -name "*.bak" -type f
To allow recursivity :
find -type f -exec md5sum '{}' ';' | sort | uniq -c -w 33 | sort -gr | head -n 5 | cut -c1-7,41-
Display only filenames :
find -maxdepth 1 -type f -exec md5sum '{}' ';' | sort | uniq -c -w 33 | sort -gr | head -n 5 | cut -c43-
Show Sample Output
-name : base of filename -o : 'or' '*.c' : avoiding "paths must precede expression" error message -type f : only find file type --color: hightlight specific word with color -E : extended regexp Show Sample Output
Give the space freed before delete files. Only delete files go to free space. Files with mora than 1 link, don't free space. Show Sample Output
This version handles directory names with spaces properly
Converts all the png files in a directory to a bunch of gifs - changing only the file extension. Converts them in parallel - simply change the '4' to match the number of CPUs you have, or the number you want to dedicate to the conversion process.
While it's easy to find video files, it's not easy to check wheter they are Movies or part of TV Series; this could be important if you need to move files before cataloguing them. Using Regex this could become possibile. Normally TV Series are names with Season and Episode numbers in the file name, this way: "X-Files S01E12 - Gna gna gna.avi" or "3x04.Falling.Skies.-.The.Revenge.mkv" and so on. This RegEx will find correct Episodes if they have the structure "S00E00" or "0E00" or "S00x00" or "0x00". In case you should need to find Movies but NOT TV Series, you have to inverse the RegEx when finding video files: find . -type f -regextype posix-extended ! -regex '^.*[S|s|\.| ]{0,1}[0-9]{1,2}[e|x][0-9][0-9].*\.(avi|mkv|srt)$' \( -iname "*.mkv" -or -iname "*.avi"-or -iname "*.srt" \)
Identify Movies but NOT TV Series using find and regex While it's easy to find video files, it's not easy to check wheter they are Movies or part of TV Series; this could be important if you need to move files before cataloguing them. Using Regex this could become possibile. Normally TV Series are names with Season and Episode numbers in the file name, this way: "X-Files S01E12 - Gna gna gna.avi" or "3x04.Falling.Skies.-.The.Revenge.mkv" and so on. This RegEx will find correct Episodes if they have the structure "S00E00" or "0E00" or "S00x00" or "0x00". Inversing RegEx makes the trick to find out Movies.
commandlinefu.com is the place to record those command-line gems that you return to again and again. That way others can gain from your CLI wisdom and you from theirs too. All commands can be commented on, discussed and voted up or down.
Every new command is wrapped in a tweet and posted to Twitter. Following the stream is a great way of staying abreast of the latest commands. For the more discerning, there are Twitter accounts for commands that get a minimum of 3 and 10 votes - that way only the great commands get tweeted.
» http://twitter.com/commandlinefu
» http://twitter.com/commandlinefu3
» http://twitter.com/commandlinefu10
Use your favourite RSS aggregator to stay in touch with the latest commands. There are feeds mirroring the 3 Twitter streams as well as for virtually every other subset (users, tags, functions,…):
Subscribe to the feed for: