List directories, subs and files


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers List directories, subs and files
# 43  
Old 04-04-2011
Hmm... strange an somewhat confusing!
find . -ls | cat -vet > /tmp/foo
Post the content of /tmp/foo
BTW, what OS are you on?
# 44  
Old 04-04-2011
Quote:
find . -ls | cat -vet > /tmp/foo
Does not generate a foo file. In fact it does not do a lot.

But I can give the result (leaving out the print to file):
Quote:
3166059 0 drwxr-xr-x 7 user staff 238 4 apr 21:12 .$
3166060 8 -rw-r--r-- 1 user staff 263 6 okt 2009 ./README.txt$
3166061 0 drwxr-xr-x 4 user staff 136 5 jan 07:25 ./test_theme$
3166062 8 -rw-r--r-- 1 user staff 765 22 aug 2010 ./test_theme/template.php$
3166063 8 -rw-r--r-- 1 user staff 1061 5 jan 07:25 ./test_theme/test_theme.info$
3428651 0 drwxr-xr-x 2 user staff 68 4 apr 21:12 ./tmp$
3166064 0 drwxr-xr-x 3 user staff 102 5 jan 07:25 ./update_test_basetheme$
3166065 8 -rw-r--r-- 1 user staff 332 5 jan 07:25 ./update_test_basetheme/update_test_basetheme.info$
3166066 0 drwxr-xr-x 3 user staff 102 5 jan 07:25 ./update_test_subtheme$
3166067 8 -rw-r--r-- 1 user staff 363 5 jan 07:25 ./update_test_subtheme/update_test_subtheme.info$
Quote:
BTW, what OS are you on?
Mac OS X.
# 45  
Old 04-04-2011
I don't understand. What does 'Does not generate a foo file. In fact it does not do a lot.' mean?
The above runs just fine under Solaris, AiX and cygwin.....
BTW, my original code was:
Code:
find . -ls | nawk '{match($0,$9 FS $10);f=substr($0,RSTART+RLENGTH+1);match(f,"/[^/]*$");print$1,$3,f,substr(f,RSTART+1)}'

FS, not OFS as in yours.
Do you run 'find . -ls | awk ....' from a shell prompt or is it part of the larger wrapper shell script? If so, do you change the 'IFS' in your shell script?
Try this:
Code:
find . -ls |awk '{match($0,$9 FS FS "*" $10);f=substr($0,RSTART+RLENGTH+1);match(f,"/[^/]*$");print$1,$3,f,substr(f,RSTART+1)}'

# 46  
Old 04-04-2011
I thought that would create a tmp dir, and in it a foo file. That did not happen. That's all.

But...
Code:
find . -ls |awk '{match($0,$9 FS FS "*" $10);f=substr($0,RSTART+RLENGTH+1);match(f,"/[^/]*$");print$1,$3,f,substr(f,RSTART+1)}'
'

does seem to work. Will report back, after tested more thoroughly.
# 47  
Old 04-05-2011
1) What output do you expect ?????

2) If you get an error message when running our code, please post exactly what you typed and what error message you got

---------- Post updated at 09:33 AM ---------- Previous update was at 09:32 AM ----------

Code:
find . ! -name \. -ls | nawk '{type=($3~/^d/)?"directory":($3~/^-/)?"file":($3~/^l/)?"link":"other";x=y=$0;sub(".*"$10,"",x);sub(".*"$10".*/","",y);sub(".*",$1 FS type FS x FS y ,$0)}1'

# 48  
Old 04-05-2011
@ctsgnb

I thought I made clear what I needed, yet apparently was not clear enough. So here goes.

Output must be something like:
Quote:
3409983;directory;./Folder_2/Folder 21;Folder 21
3409985;file;./Folder_2/File 21;File 21
3409987;directory;./Folder_2/Folder 22;Folder 22
Hence output consists of 4 elements, separated by a semicolon:
Quote:
Inode;dir/file;full path;folder/file name
Your code
Code:
find . ! -name \. -ls | awk '{type=($3~/^d/)?"directory":($3~/^-/)?"file":($3~/^l/)?"link":"other";x=y=$0;sub(".*"$10,"",x);sub(".*"$10".*/","",y);sub(".*",$1 FS type FS x FS y ,$0)}1'

returns all elements but does not separate these elements with a semicolon. Adding
Quote:
BEGIN { OFS = ";";}
did not help.

A print is shown below:
Quote:
3423276 file ./dir-file-list.csv dir-file-list.csv
3409883 file ./document-level_0.txt document-level_0.txt
3409869 directory ./Folder_1 Folder_1
3409890 file ./Folder_1/document-level 1.txt document-level 1.txt
3409872 directory ./Folder_1/Folder_11 Folder_11
3409904 file ./Folder_1/Folder_11/File with name.txt File with name.txt
3409897 file ./Folder_1/Folder_11/File_with_name.txt File_with_name.txt
3409981 directory ./Folder_2 Folder_2
3409983 directory ./Folder_2/Folder 21 Folder 21
3409984 directory ./Folder_2/Folder 22 Folder 22
3409986 file ./Folder_2/Folder 22/document-level 22 copy.txt document-level 22 copy.txt
So all your code needs is adding the semicolon.


@vgersh99
Same requirements:
Quote:
3409983;directory;./Folder_2/Folder 21;Folder 21
3409985;file;./Folder_2/File 21;File 21
3409987;directory;./Folder_2/Folder 22;Folder 22
Hence output consists of 4 elements, separated by a semicolon:
Quote:
Inode;dir/file;full path;folder/file name
Your code (which I modified a little, adding BEGIN { OFS=";";}
Code:
find . -ls |awk 'BEGIN { OFS = ";";} {match($0,$9 FS FS "*" $10);f=substr($0,RSTART+RLENGTH+1);match(f,"/[^/]*$");print$1,$2,f,substr(f,RSTART+1)}'

works yet does not return whether a line is in fact a file or a directory. See print below:
Quote:
3409983;0;./Folder_2/Folder 21;Folder 21
3409984;0;./Folder_2/Folder 22;Folder 22
3409986;8;./Folder_2/Folder 22/document-level 22 copy.txt;document-level 22 copy.txt
I mistakenly thought that the '0' and '8' referred to a filetype, where '0' would be a directory and '8' would be a file, yet I was told that is not the case. Hence with your above output I can not know whether something is a file or a dir.

@ both: hope this clarifies it a bit
# 49  
Old 04-05-2011
Ok then here you go :

Code:
find . ! -name \. -ls | nawk '{type=($3~/^d/)?"directory":($3~/^-/)?"file":($3~/^l/)?"link":"other";x=y=$0;sub(".*"$10" ","",x);sub(".*"$10".*/","",y);sub(".*",$1 OFS type OFS x OFS y,$0)}1' OFS=';'

This User Gave Thanks to ctsgnb For This Post:
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Solaris

A way to list directories that contain specific files.

Hi everyone My issue is this, I need to list all the sub directories in a directory that contains files that have the extension *.log, *.dat and *.out . After reviewing the output i need to delete those directories i do not need. I am running Solaris 10 in a bash shell. I have a script that I... (2 Replies)
Discussion started by: jsabo40
2 Replies

2. Shell Programming and Scripting

List directories and count files inside

I'm trying to make a script that will list all directories under a selection as well as the number of files in each. I cannot get it to work under a symbolic link. The file structure is: XXX_20131127_001 dir01 (sym link) 2404x912 file.0000.xxx to ... (10 Replies)
Discussion started by: scribling
10 Replies

3. Shell Programming and Scripting

How to list all the files, directories and sub-directories in the current path except one directory?

Can anyone come up with a unix command that lists all the files, directories and sub-directories in the current directory except a folder called log.? Thank you in advance. (7 Replies)
Discussion started by: Manjunath B
7 Replies

4. UNIX for Dummies Questions & Answers

List biggest files (Not Directories)

Hello, can you please help me writing a command that would output the biggest files on my system from biggest to smallest? I want this to print only the files, not the directories. I have tried du -a ~ | sort -nr | head -10 However, this also prints out all the directories - which I do... (8 Replies)
Discussion started by: tonydaniels1980
8 Replies

5. UNIX for Dummies Questions & Answers

list directories with more than X files

I want to search a server beginning at /home and list directories with more than X files I found a hack that injects tons of files into a directory How can I search the server recursively and list directories with more than X files? Thank you! like, find /home (directories, that meet the... (5 Replies)
Discussion started by: vanessafan99
5 Replies

6. UNIX for Dummies Questions & Answers

List directories and sub directories recursively excluding files

Hi, Please help me, how to get all the direcotries, its sub directories and its sub directories recursively, need to exclude all the files in the process. I wanted to disply using a unix command all the directories recursively excluding files. I tried 'ls -FR' but that display files as... (3 Replies)
Discussion started by: pointers
3 Replies

7. Shell Programming and Scripting

How to get a list of files in a dir w/o sub-directories?

Hi I am looking for the correct syntax to find all files in the current directory without listing sub-directoris. I was using the following command, but it still returns subdirectoris and files inside them: $ ls -laR | grep -v ^./ Any idea? Thanks PS I am in ksh88 (4 Replies)
Discussion started by: aoussenko
4 Replies

8. Shell Programming and Scripting

Command to list only files omit directories.

Hi All I am writting a script that does a comparison between files in 2 diffectent directories. To do this I need a command that will list out only the files in a give directory and omit any sub dorectories with that directory. But I am unable to find it. Please Help. I tried ls... (5 Replies)
Discussion started by: Veenak15
5 Replies

9. UNIX for Dummies Questions & Answers

List directories and files

I want to count how many levels there are under a directory. I repeat level. Also how i count only all the files in a directoy ( all files of all directories of all leves down!) and how can i count only all the directories under a directory (including subdirectories, all levels down) ... (2 Replies)
Discussion started by: psalas
2 Replies

10. Shell Programming and Scripting

List specific files from directories

Hello, I would like to list the files from all directories that has been modified more than 1 month ago, and whose name is like '*risk*log'. I think a script like this should work : ls -R | find -name '*risk*.log' -mtime 30 -type f But it tells me "no file found" though I can see some. ... (4 Replies)
Discussion started by: Filippo
4 Replies
Login or Register to Ask a Question