Существует несколько способов сделать это с находкой.
find . -iname 'test*' -type f -exec ls -i {} \;
find
: команда находки
.
: каталог для поиска
-iname 'test*'
: ищите что-либо, что соответствует тесту* независимо от случая
-type f
: только ищите файлы
-exec ls -i {} \;
: выполните ls-i на каждом найденном файле
find . -iname 'test*' -type f -printf '%i %f\n'
find
: команда находки
.
: каталог для поиска
-iname 'test*'
: ищите что-либо, что соответствует тесту* независимо от случая
-type f
: только ищите файлы
-printf '%i %f\n'
- распечатайте inode, затем имя файла только (никакие каталоги), и разделите каждый файл новой строкой
Примечания:
-iname
для -name
если Вы хотите быть чувствительными к регистру..
с полным путем, если Вы хотите искать что-нибудь кроме текущего рабочего каталога. %f
с %p
для имени файла, включая путь (отличается, используете ли Вы относительные или полные пути в своей команде находки).-prune
и -depth
'test[0-9]'
найти все test0-test9, или 'test[0-9]*'
для чего-либо со строкой "тест", затем одна цифра, что-либо после этого.Это не возможно на AIX даже с sed
инструмент установлен.
Действительно необходимо использовать временный файл, любят предложенный terdon в комментариях к вопросу:
sed 's/a/b/' foo > bar && mv bar foo
Вы могли также использовать ed
который действительно встраивает редактирование.
Определите переменную и используйте подоболочку для выполнить sed
и перенаправить в файл.
Очень важно использовать "
(двойные кавычки) для защиты переменной $ value
:
value = $ (sed 's / old / new / g' file) && echo "$ value"> file
Or
Execute echo
с подоболочкой, которую вы собираетесь выполнить 'sed' и перенаправление в файл:
echo "$ (sed 's / old / new / g' file)"> file
Использовать стандартный совместимый sed
, который не имеет -i
, выполнить в -редактирование места таким образом, чтобы не изменялись разрешения, права собственности на файлы и некоторые другие метаданные, а также жесткие ссылки и символические ссылки. не сломаны:
cp file file.tmp &&
sed 'expression' file.tmp >file &&
rm -f file.tmp
Это создает временную копию файла, который мы хотим отредактировать, а затем применяет команду sed
к этой копии, перенаправляя результат к исходному имени файла.
Перенаправление на исходное имя файла приведет к усечению и перезаписи этого файла, а поскольку файл не удаляется и не создается заново, он сохраняет большую часть своих метаданных.
sed
установленный? – Stéphane Chazelas 30.01.2014, 16:42-i
был включенsed-3.95
(2002). IBM предлагает 3.0.2, 4.0.7 и 4.1.1 AFAICT. Если Вы не получите более старый, Вы получите-i. Также обратите внимание, что можно получить упакованную версию GNUsed
для AIX из других источников. – Stéphane Chazelas 30.01.2014, 17:08