Home > Mobile >  Using CAT command read all file content recursively for paths file
Using CAT command read all file content recursively for paths file

Time:05-12

So I've a file called allTextFiles.txt in which it has paths of a all regular text file.

eg:
./test/file1.txt
./test/file2.txt
./test/file3.txt

My task is to formulate shell command such that command CAT will go through all of these paths and display content of each file.
Is it possible ?

CodePudding user response:

Using xargs with the allTextFiles.txt

You can use the command cat to list the content and xargs (Xargs command documentation) to process every line of the file. For example:

cat allTextFiles.txt | xargs cat
kk #./test/file1.txt
jj #./test/file2.txt
yy #./test/file3.txt

Using find command without allTextFiles.txt

You can use the command find (find command documentation) to go trough the main folder and search recursively. Once you find a file, to use the cat command.

You achieve the purpose of showing all the content of txt files recursively with only one command.

find . -type f -name "*.txt" -exec cat {} \;
kk #./test/file1.txt
jj #./test/file2.txt
yy #./test/file3.txt

Where the . means current directory. -type f only filters files. -name "*.txt" filters only files ending with .txt extension and the -exec part is where you process all the files found.

Does it cover your need?

CodePudding user response:

You can use a loop; something like

while IFS= read -r file; do
    cat "$file"
done < allTextFiles.txt

See Bash FAQ 001 for more discussion on reading a file a line at a time (Much of the content applies to all shells, not just bash).

If you are using bash:

readarray -t files < allTextFiles.txt
cat "${files[@]}"

is an alternative that avoids the explicit loop.

  • Related