Search code examples
shellksh

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 before a certain date, so the pathname doesn't matter.


Solution

  • 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.