Используйте найдите:
find . -name \*.txt -print
В системах, которые используют GNU, находят, как большая часть GNU/дистрибутивов Linux, можно не учесть - печать.
Вы могли использовать, находят вместо этого:
find . -name '*.txt'
Попробуйте find
. Можно искать его точно в странице справочника, но это - вид подобных это:
find [start directory] -name [what to find]
так для Вашего примера
find . -name "*.txt"
должен дать Вам, что Вы хотите.
DIR=your_path
find $DIR | sed 's:""$DIR""::'
'sed' удалит 'your_path' из всех результатов 'find'. И вы получаете относительно пути "DIR".
Вот сценарий Perl:
sub format_lines($)
{
my $refonlines = shift;
my @lines = @{$refonlines};
my $tmppath = "-";
foreach (@lines)
{
next if ($_ =~ /^\s+/);
if ($_ =~ /(^\w+(\/\w*)*):/)
{
$tmppath = $1 if defined $1;
next;
}
print "$tmppath/$_";
}
}
sub main()
{
my @lines = ();
while (<>)
{
push (@lines, $_);
}
format_lines(\@lines);
}
main();
использование:
ls -LR | perl format_ls-LR.pl
Используйте дерево
с -f
(полный путь) и -i
(без отступов):
tree -if --noreport .
tree -if --noreport directory/
Затем вы можете использовать grep
, чтобы отфильтровать те, которые вам нужны.
Если команда не найдена, вы можете ее установить:
Введите следующую команду для установки древовидной команды в RHEL / CentOS и Fedora linux:
# yum install tree -y
Если вы используете Debian / Ubuntu, Mint Linux введите следующую команду в ваш терминал:
$ sudo apt-get install tree -y