On Fri, Dec 18, 2015 at 7:05 PM, Krem <valk...@yahoo.com> wrote: > Hi all, > > I have one folder and this folder contains several folders. Each sub > folders > contains 5 or 6 files. So i want count the number of rows within each > file and produce an output. > > Assume the main folder called A and it has three subfolders folder1, > folder2 and folder3. > Folder1 has 4 files: file1, file2, file3 and file4. > > The same thing is for folder2 and folder3. > Assume that file1 has 36 rows ( wc -l file1) =36. > Assume that file2 has 50 rows ( wc -l file2) =50. > Assume that file3 has 36 rows ( wc -l file3) =120. > Assume that file4 has 50 rows ( wc -l file4) =15. > > > I want the output > mainfolder subfiolder filename # of rows > > A Folder1 file1 36 > A Folder1 file2 50 > A Folder1 file3 120 > A Folder1 file4 15 > A folder 2 filename1 .. > .. > .. > .. > A last_folder lasfilename ... . > > Can anyone help me out? > > Thanks in adv > ance > > Try this and see if it is close to what you want:
find . -type f | while read i;do echo -e "${PWD ##*/ } $(dirname ${i } | cut -b 3- ) $(basename ${i}) $(wc -l ${i})" ;done | cut -d " " -f 1,2,4,3 ${PWD##*/} is the "mainfolder" ${PWD} is the entire name of the current directory. ##*/ eliminates all character up to, and including the _last_ / . This give you just the last node name. E.g /home/me/some/A ==> A dirname ${i} | cut -b 3- gives the "subfolder" name. The "cut -b 3-" cuts off the first two bytes, which is _normally_ always "./" given the syntax of the find command. You may need to mess with this. basename ${i} just gives the file name itself, with no directory aka "filename" wc -l -- you already know that. the final cut command just rearranges the output into the order you wanted it to be in. -- Schrodinger's backup: The condition of any backup is unknown until a restore is attempted. Yoda of Borg, we are. Futile, resistance is, yes. Assimilated, you will be. He's about as useful as a wax frying pan. 10 to the 12th power microphones = 1 Megaphone Maranatha! <>< John McKown