Reputation: 783
Using cat command as follows we can display content of multiple files on screen
cat file1 file2 file3
But in a directory if there are more than 20 files and I want content of all those files to be displayed on the screen without using the cat command as above by mentioning the names of all files.
How can I do this?
Upvotes: 54
Views: 181996
Reputation: 59
Have you tried this command?
grep . *
It's not suitable for large files but works for /sys or /proc, if this is what you meant to see.
Upvotes: 5
Reputation: 752
If you want to do more then just one command called for every file, you will be more flexible with for loop. For example if you would like to print filename and it contents
for file in parent_dir/*.file_extension; do echo $file; cat $file; echo; done
Upvotes: 4
Reputation: 27466
You could use awk
too. Lets consider we need to print the content of a all text files in a directory some-directory
awk '{print}' some-directory/*.txt
Upvotes: 1
Reputation: 585
I also found it useful to print filename before printing content of each file:
find ./ -type f | xargs tail -n +1
It will go through all subdirectories as well.
Upvotes: 28
Reputation: 4015
If it's just one level of subdirectory, use cat * */*
Otherwise,
find . -type f -exec cat {} \;
which means run the find
command, to search the current directory (.) for all ordinary files (-type f). For each file found, run the application (-exec) cat, with the current file name as a parameter (the {} is a placeholder for the filename). The escaped semicolon is required to terminate the -exec clause.
Upvotes: 28
Reputation: 6510
You can use the *
character to match all the files in your current directory.
cat *
will display the content of all the files.
If you want to display only files with .txt extension, you can use cat *.txt
, or if you want to display all the files whose filenames start with "file" like your example, you can use cat file*
Upvotes: 59