How to Finding Files : Find ,locate ,slocate

1.Finding All Your MP3 Files

Problem:

You have MP3 audio files scattered all over your filesystem.You'd like to move them all into a single location so that you can organize them and then copy them onto a music player.

Solution:

The find utility can locate all of those files and then execute a command to move them where you want .

[root@DBAMAXWELL cp8]# find . -name '*.mp3' -print -exec mv '{}' ~/songs \;

2.How to handling Filenames containing odd characters

Problem

You used a find command like  "Finding All Your MP3 Files" but the results were not what you intended because many of your filenames contain odd characters.

Solution

$ find some_directory -type f -print0 | xargs -0 chmod 0644

3. How to Speeding up operations on Found Files

Problem

You want to speed finding all files up.

Solution

$ find some_directory -type f -print0 | xargs -0 chmod 0644

4.Finding Files Across Symbolic Links

Problem

You issued a find command to find your .mp3 files but it didn't find all of them.

Solution

Use the -follow predicate.

[maxwell@DBAMAXWELL learning]$ find . -follow -name '*.mp3' -print0 | xargs -i -0 mv '{}' ~/learning
[maxwell@DBAMAXWELL learning]$ ls -ltr
total 4
-rw-r--r--  1 maxwell root  15 Mar  6 16:13 over.here
drwxrwxr-x 11 maxwell root 153 Mar 19 06:35 learning_bash_shell
-rwxrwxr-x  1 maxwell root   0 Mar 19 06:36 test1.mp3
[maxwell@DBAMAXWELL learning]$ 

5.Finding Files Irrespective of Case

Problem

Some of your MP3 files end with .MP3 rather than .mp3.How do you find those?

Solution

Use the -iname predicate to run a case-insensitive search ,rather than just -name

maxwell@DBAMAXWELL cp9]$ ls -tlr
total 0
-rwxrwxr-x 1 maxwell root 0 Mar 19 06:36 test.mp3
-rwxrwxr-x 1 maxwell root 0 Mar 19 06:52 test.MP3
[maxwell@DBAMAXWELL cp9]$ find . -follow -iname '*.mp3' -print0 | xargs -i -0 mv '{}' ~/learning
[maxwell@DBAMAXWELL cp9]$ ls -ltr
total 0
[maxwell@DBAMAXWELL cp9]$ cd ..
[maxwell@DBAMAXWELL learning_bash_shell]$ cd ..
[maxwell@DBAMAXWELL learning]$ ls -ltr
total 4
-rw-r--r--  1 maxwell root  15 Mar  6 16:13 over.here
drwxrwxr-x 11 maxwell root 153 Mar 19 06:35 learning_bash_shell
-rwxrwxr-x  1 maxwell root   0 Mar 19 06:36 test.mp3
-rwxrwxr-x  1 maxwell root   0 Mar 19 06:36 test1.mp3
-rwxrwxr-x  1 maxwell root   0 Mar 19 06:52 test.MP3
[maxwell@DBAMAXWELL learning]$ 

One of the most common places where you'll see the upper- and lowercase issue

[maxwell@DBAMAXWELL cp9]$ find . -name '*.jpg' -print
./test.jpg
[maxwell@DBAMAXWELL cp9]$ find . -name '*.[Jj][Pp][Gg]' -print
./test.jpg
./test.JpG
./test.jPg
./test.JPG
./test.jpG
./test.JPg
[maxwell@DBAMAXWELL cp9]$ 

6.Finding Files by Date

Problem

Suppose someone sent you a JPEG image file that you saved on your filesystem a few month ago.Now you don't remeber where you put it,How can you find it ?

Solution

Use a find command with the -mtime predicate, which checks the date of last modification.

[maxwell@DBAMAXWELL cp9]$ find . -iname '*.[Jj][Pp][Gg]' -mtime +90 -print
[maxwell@DBAMAXWELL cp9]$ find . -name '*.jpg' -mtime +90 -print  

The -mtime predicate takes an argument to specify the timeframe for the search.

The find utility also has logical AND ,OR ,and NOT constructs so if you know that the file was at least one week old (7 days) but not more than 14 days old , you can combine the predicate like this :

[maxwell@DBAMAXWELL cp9]$ find . -mtime +7 -a -mtime -14 -print

You can get even more complicated using OR as well as AND and even NOT to combine condition , as in :

[maxwell@DBAMAXWELL cp9]$ find . -mtime +14 -name '*.text' -o \( -mtime -14 -name '*.txt' \) -print

7.Finding Files by Type

Problem:

You are looking for a directory with the word "java" in it, When you tried

[maxwell@DBAMAXWELL cp9]$ find . -name '*java' -print

you got way too many files - including all the java source files in your part of the filesystem.

Solution:

Use the -type predicate to select only directories

[maxwell@DBAMAXWELL cp9]$ find . -type d -name '*java*' -print

8.Finding Files by Size

 Problem

How do you find your largest files?

Solution

Use the -size predicate in the find command to select files above ,below ,or exactly a certain size.

[maxwell@DBAMAXWELL cp9]$ find . -size +3000k -print

9. How to finding files by content?

Problem 

How do you find a file of some known content?

Solution

if you are in the vicinity of that file,say within the current directory , you can start with a simple grep.

[maxwell@DBAMAXWELL cp9]$ ls -ltr
total 4
-rwxrwxr-x 1 maxwell root    0 Mar 19 06:59 test.jpg
-rwxrwxr-x 1 maxwell root    0 Mar 19 07:02 test.JpG
-rwxrwxr-x 1 maxwell root    0 Mar 19 07:02 test.jPg
-rwxrwxr-x 1 maxwell root    0 Mar 19 07:02 test.JPG
-rwxrwxr-x 1 maxwell root    0 Mar 19 07:03 test.jpG
-rwxrwxr-x 1 maxwell root    0 Mar 19 07:03 test.JPg
-rwxrwxr-x 1 maxwell root 1879 Mar 19 08:31 mother.txt
[maxwell@DBAMAXWELL cp9]$ grep -i portend *.txt
had used the word “portend.”
grep -i portend *.txt
grep -i portend */*.txt
find . -name '*.txt' -exec grep -Hi portend '{}' \;
[maxwell@DBAMAXWELL cp9]$ 

With the -i option ,grep will ignore upper- and lowercase difference.

If you think the file might be in one of your many subdirectories, you can try to reach all the files that are in subdirectories of the current directory with this command.

[maxwell@DBAMAXWELL cp9]$ grep -i portend */*.txt
grep: */*.txt: No such file or directory

let's use a more complete solution: the find command.Use the -exec option on find so that if the predicates are true up to that point, it will  execute a command for each file it finds.

[maxwell@DBAMAXWELL cp9]$ find . -name '*.txt' -exec grep -Hi portend '{}' \;
./mother.txt:had used the word “portend.”
./mother.txt:grep -i portend *.txt
./mother.txt:grep -i portend */*.txt
./mother.txt:find . -name '*.txt' -exec grep -Hi portend '{}' \;
[maxwell@DBAMAXWELL cp9]$ 

10. How to finding existing files and content fast?

Problem

You'd like to be able to find files without having to wait for a long find command to complete. or you  need to find a file with some specific content.

Solution

$ locate apropos

/usr/bin/apropos

/usr/share/man/de/man1/apropos.1.gz

/usr/share/man/es/man1/apropos.1.gz

/usr/share/man/it/man1/apropos.1.gz

/usr/share/man/ja/man1/apropos.1.gz

/usr/share/man/man1/apropos.1.gz

11.How to finding a file using a list of possible locations

Problem

You need to execute ,source, or read a file,but it may be located in a number of different places in or outside of the $PATH.

Solution

$ source myfile

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值