как игнорировать каталоги, но не файлы в них в bash-скрипте с помощью find - PullRequest
1 голос
/ 17 февраля 2011

Я хочу выполнить команду find, но найти файлы только в каталогах, а не в самих каталогах или подкаталогах. Также приемлемо было бы найти каталоги, но вывести их или что-то подобное, по-прежнему перечисляя файлы в этих каталогах. На данный момент, чтобы найти все файлы, измененные в последний день в рабочем каталоге, и вывести из DS_Store grep и заменить пробелы подчеркиванием:

find . -mtime -1 -type f -print | grep -v '\.DS_Store' | awk '{gsub(/ /,"_")}; 1'

Любая помощь будет оценена!

1 Ответ

0 голосов
/ 17 февраля 2011

Если у вас есть GNU find:

find . -mtime -1 ! -name '.DS_Store' -type f -printf '%f\n'

напечатает только базовое имя файла.

Для других версий find:

find . -mtime -1 ! -name '.DS_Store' -type f -exec basename {} \;

тогда вы могли бы сделать:

find -name index.html -exec sh -c 'basename "$1" | tr " " _' _ {} \;
...