Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
193 views
in Technique[技术] by (71.8m points)

shell - Have Find print just the filenames, not full paths

I'm using the find command in a ksh script, and I'm trying to retrieve just the filenames, rather than the full path. As in, I want it to return text.exe, not //severname/dir1/dir2/text.exe.

How would I go about getting that? To clarify, i know the directory the files are in, i am just grabbing the ones created befoee a ceetain date, so the pathname doesnt matter.

question from:https://stackoverflow.com/questions/9202495/have-find-print-just-the-filenames-not-full-paths

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

you can do it with:

find ..... |sed 's#.*/##'

however does it really make sense? if there are two files with same filename but located in different directories, how can you distinguish them?

e.g.

you are in /foo

/foo/a.txt
/foo/bar/a.txt

EDIT

edit the answer to gain some better text formatting.

As you described in comment, so you want to

  1. find some files,
  2. copy them to a dir,
  3. gzip them to an archive say a.gz
  4. remove copied files only if step 2 was successful

This could be done in one shot:

find ...|xargs tar -czf /path/to/your/target/a.gz 

this will find files, make a tar (a.gz) to your target dir.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...