How to display contents of all files under a directory on the screen using unix commands

StackOverflow https://stackoverflow.com/questions/21277963

  •  01-10-2022
  •  | 
  •  

سؤال

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?

هل كانت مفيدة؟

المحلول

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*

نصائح أخرى

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.

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.

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

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

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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top