UNIX command to display Owner,Group,Root and Subdirectories list

Hi Team,

Am a newbie to Unix. As I would like to see the Server Name,Owner Name ( not numeric form), Group Name ( not numeric ID), ROOT path.

I would like to send this list as an attachment to my personal mail. Can any one please help me out to to resolve this .

Here is the sample result which am expecting

Eg :   Server_Name   OWNER    Group     Path ( which shows the entire path)
        --------------------------------------------------------------------------------
           hgr0218        INF         ABC       /home/abc
           hgr0218        NHC        HBC      /home/abc/config
           hgr0218        INF         ABC      /home/abc/bin
....

Thanks,
Vasuv

---------- Post updated at 08:29 PM ---------- Previous update was at 07:56 PM ----------

find . -type d -exec ls -ld {} \; | awk '{print $3,$4,$9}' | egrep  -v "^oasitqtc"

using this commad am able to see the list but unable to copy the entire list. Can any one advise how to coy the entire list and how can I this copies to list to my mail.

Please advise.

Copy to where? To mail it, pipe it into the mail command.

1 Like

Hi , I am able to see the list. as it's a big list ( around 10k lines) i am not sure how to copy the entire result set.

So I would like to create a file "Test.txt' and would like to move this result set to test.txt and need to send the test.txt file to my mail.

Please advise.

Thanks

---------- Post updated at 10:42 PM ---------- Previous update was at 10:28 PM ----------

Hi Rudi,

Here is the command am using to find the list

find . -type d -exec ls -ld {} \; | awk '{print $3,$4,$9}' | egrep  -v "^oasitqtc"

here is the output am getting

etlndw etlndw ./inform/ndw/ExtLdr/NULOGX
 etlndw etlndw ./inform/ndw/ExtLdr/QAR
 etlndw etlndw ./inform/ndw/ExtLdr/PFSS
 etlndw etlndw ./inform/ndw/ExtLdr/OAR
 etlndw etlndw ./inform/ndw/ExtLdr/SLSTRNS
 inf91etf informat ./inform/ndw/ExtLdr/MDM
 etlndw etlndw ./inform/ndw/ExtLdr/TPM
 etlndw informat ./inform/ndw/ExtLdr/DSHPD
 etlndw informat ./inform/ndw/ExtLdr/MDMSIPS
...................

like this I have 10k records

I would like to copy this list into an excel sheet/.txt by giving file name as "TEST.txt/Test.xlsx" and send this file as an attachment to my Mail.

Please advise.

As RudiC already has told you: pipe it into mail! There is no need for an intermediary file:

find <...your complete command...> | mail -s "Subject Text" recipient@host

This will generate the list, put it into a mail, label the mail with the subject text "Subject Text" and send it to recipient@host.

But i would like to go over your command itself, because it is unnecessary complicated and will tax your system a lot more than it should.

First:

<..> | awk '{print $3,$4,$9}' | egrep  -v "^oasitqtc"

The egrep is completely unnecessary because awk can do that itself:

<..> | awk '! /^oasitqtc/ {print $3,$4,$9}'

Instead of producing all lines first and filter out the ones you are not interested in you start with only the ones you are interested in in first place.

Next:

find . -type d -exec ls -ld {} \; | <...>

This makes find first produce a list of directory names and then invoke the ls command once for every directory found that way. There is a built-in functionality in find which does about the same:

find . -type d -ls | <...>

The format is a little different (it is like ls -ails ) which means you will have to modify the awk -command following a little bit. But this will definitely save the system some thousands of unnecessary calls to ls .

Next:

find . -type d -exec ls -ld {} \; | awk '{print $3,$4,$9}' | egrep  -v "^oasitqtc"

As i take it you are searching for directories owned (or, in your case: NOT owned) by a specific user ("oasitqtc"). For this find also has a built-in provision: the -user clause. It takes a user name (or user ID) and presents only the files/directories found that are owned by that user. For instance:

find . -type d -name "abc*" -user myuser

will find in the current directory all directories with names starting with "abc" and owned by user "myuser". You will have to reverse that, which is also possible (notice the "!", which is a logical NOT), and you do neither awk s ability to filter out lines nor egrep to do the same:

find . -type d ! -user oasitqtc -ls | awk '{print ...... }'

Again: because of the different output format you will have to modify the awk -statement to only leave the necessary information. If you have GNU-find (like if you work on a Linux-System) you could use the -printf -clause and you would not need awk at all.

I hope this helps.

bakunin

3 Likes

Note: technically the -ls option to find is not part of Posix, although it will be an option in most finds...

A good alternative is to use:

find . -type d -exec ls {} +

Which really is much faster than \;

and this can also be combined with the ! -user option as suggested by Bakunin...

1 Like

Hi.

Regarding email enclosures and attachments, from a recent security newsletter:

--Malicious Macros in Word Documents
(March 14, 2016)
Malicious macros embedded in Word documents are increasingly being used
as an attack vector. Researchers have now found a variant in which the
documents use fileless malware; in other words, they place malware
directly into the device's memory. The attack was delivered through
targeted spam that contains a malicious document. If the macros are
permitted to run, they use PowerShell to gather information about the
computer. The malware looks for machines where financial transactions
are conducted.

This is a reason I don't look at emails that contain Word, Excel, etc. documents. The OP may be comfortable looking at such email from himself or colleagues, but I would not be. Text is, in my opinion, the best and only kind of attachment allowed.

Best wishes ... cheers, drl

1 Like

Excel will gladly open .csv files (usually "," delimited) or .txt file (tab) delimited.
drl pointed out why it is a security no-no to try using proprietary windows formats that support embedded program text like VB - that will execute when opened.

For example:

uuencode file.you.made file.txt | mailx -s 'see attached '  somebody@mycompany.com
1 Like