Найти напечатать только имена, а не полные пути

Я'м с помощью команды найти в скрипте КШ, и я'м пытаясь получить только имена файлов, а не полный путь. Как в, Я хочу его вернуть text.exe не //severname/dir1/dir2/text.exe.

Как бы я идти о получении этого? Для уточнения, я знаю, что в каталоге файлов, я просто возьму те, что созданы befoee дату ceetain, так что путь не имеет значения.

Комментарии к вопросу (3)

Если вы'ре, используя GNU найти, тогда

find path -printf "%f\n"

будет просто напечатать имя файла и исключить путь.

Комментарии (0)
find ... -exec basename {} \; 

будет также сделать трюк .. но как @Кент спрашивает, Почему ты хочешь этого?

Комментарии (5)
Решение

вы можете сделать это с:

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

однако имеет ли смысл? если есть два файла с одинаковым именем, но расположенные в различных каталогах, как можно отличить их?

например

you are in /foo

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

Редактировать

редактировать ответ, чтобы получить некоторые лучше форматирование текста.

Как вы описали в комментарии, так что вы хотите

  1. найти некоторые файлы,
  2. скопируйте их в Реж,
  3. помощью gzip их в архив сказать.ГЗ
  4. удалить скопированные файлы, только если Шаг 2 прошел успешно

Это может быть сделано в одном кадре:

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

это позволит найти файлы, сделать смолу (а.ГЗ) для вашей целевой реж.

Комментарии (10)

Здесь'с другой ответ.

find | awk -F/ '{print $NF}'    
Комментарии (2)

ГНУ найти поддерживает это с помощью , поэтому все, что вам нужно сделать, это

find ... -printf '%f\n'

Обновление: Упс... это уже было в ответ на @Гленн-Джекман, который я как-то пропустил.

Комментарии (0)