Sandra Schlichting
Sandra Schlichting

Reputation: 25986

Can this be printed on same line?

This command will count the number of files in the sub-directories.

find . -maxdepth 1 -type d |while read dir;do echo "$dir";find "$dir" -type f|wc -l;done

Which looks like

./lib64
327
./bin
118

Would it be possible to have it to look like

327 ./lib64
118 ./bin

instead?

Upvotes: 2

Views: 78

Answers (3)

Aaron McDaid
Aaron McDaid

Reputation: 27133

pipe into tr to remove or replace newlines. I expect you want the newline to be turned into a tab character, like this:

find . -maxdepth 1 -type d |while read dir;do
   find "$dir" -type f|wc -l  | tr '\n' '\t';
   echo "$dir";
done

(Edit: I had them the wrong way around)

Upvotes: 1

Ben Voigt
Ben Voigt

Reputation: 283624

do echo -n "$dir "

The -n prevents echo from ending the line afterwards.

Upvotes: 0

asveikau
asveikau

Reputation: 40226

There are a number of ways to do this... Here's something that doesn't change your code very much. (I've put it in multiple lines for readability.)

find . -maxdepth 1 -type d | while read dir; do
   echo `find "$dir" -type f | wc -l` "$dir"
done

Upvotes: 4

Related Questions