List directory name (only once) after multiple file extensions found


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting List directory name (only once) after multiple file extensions found
# 1  
Old 11-10-2011
List directory name (only once) after multiple file extensions found

Here is a simplified example of my problem. Say I have the following 3 sub-directories;

./folder1
A.txt
A.sh

./folder2
B.txt

./folder3
C.txt
C.sh

I would like to list the directory names which contain both '.txt' & '.sh' type extensions. I have came up with the following code;
Code:
find . -type f \( -name "*.txt" -o -name "*.sh" \) -exec ls -l {} \; | sed 's/[^/]*$//'

This produces the following output;

./folder1/ (e.g ./folder1/A.txt)
./folder1/ (e.g ./folder1/A.sh)
./folder3/ (e.g ./folder3/C.txt)
./folder3/ (e.g ./folder3/C.sh)

This is a list of each directory for each instance of '.txt' and '.sh'. What I really want is only;

./folder1/
./folder3/

Would be great if this could all be done in the same line of code (find command). This is probably straight forward but I just cant seem to get it.

Thanks in advance.

Last edited by vbe; 11-10-2011 at 01:06 PM..
# 2  
Old 11-10-2011
Maybe this:
Code:
find . -type f \( -name "*.txt" -o -name "*.sh" \) -printf "%h\n" | sort -u

# 3  
Old 11-10-2011
thanks for the quick response. I tried your method but got '-printf is not a valid option'. I tried it using just 'print' and got 'There is a missing conjunction'
# 4  
Old 11-10-2011
How about this one:
Code:
find . -type f \( -name "*.txt" -o -name "*.sh" \) -exec dirname {} \; | sort -u

# 5  
Old 11-10-2011
starting with your code fragment:
Code:
find . -type f \( -name "*.txt" -o -name "*.sh" \) -exec dirname {} \;  | sort -u

# 6  
Old 11-10-2011
Tried the code but it now just outputs all the subdirectories in the main directory, regardless of the search criteria.
# 7  
Old 11-10-2011
No way! What the command does is:
Code:
# Gets the result of the command below:
find . -type f \( -name "*.txt" -o -name "*.sh" \)
# And execute a:
dirname "<output line>"

A more verbose example:
Code:
find . -type f \( -name "*.txt" -o -name "*.sh" \) | xargs -t -I {} dirname "{}"

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

While loop a file containing list of file names until the files are found?

Hi, I have a control file which will contain all filenames(300) files. Loop through all the file names in the control files and check the existence of this file in another directory(same server). I need to infinitely(2 hrs) run this while loop until all the files are found. Once a file is found,... (5 Replies)
Discussion started by: laknar
5 Replies

2. Shell Programming and Scripting

Check if files inside a text file are found under a directory

Hi all, Please somebody help me with this: I want to check if the files listed in a text file, are found under a directory or not. For example: the file is list_of_files.txt, which contains inside this rows: # cat list_of_files logs errors paths debug # I want to check if these... (3 Replies)
Discussion started by: arrals_vl
3 Replies

3. Red Hat

No such file or directory found?

what’s going on these commands (/tmpdir %) ls Foo (tmpdir % )cat foo Cat:foo! No such file or directory any help me out i checked with permission...even though it is not working (1 Reply)
Discussion started by: rajeshz
1 Replies

4. UNIX for Advanced & Expert Users

Watch directory and move specific file extensions

Hi all, This is actually more for my lazyness then anything else, but I think others might find it useful to use as well. Basically this is what I am trying to achieve... In my ubuntu home dir under Downloads is where firefox saves everything by default, now I know that you can manually... (3 Replies)
Discussion started by: STOIE
3 Replies

5. Shell Programming and Scripting

Renaming of files with different extensions on the same path to .found with the help of loop

hi , I have certain files at the same path with differeent extensions like .dat , .txt etc ...........i need to rename them with extension .found at the same path with the help of loop.... also the files names will be like this ; abc_2010_c1.dat abc_2010_c2.dat xyz_2010_c1.txt (2 Replies)
Discussion started by: amitpta
2 Replies

6. Shell Programming and Scripting

file extensions in a directory structure

Hi, I have a huge directory structure with multiple directories and subdirectories in each of the directory. i am trying to find the various file extensions in the directory structure and put them into a file. is there any way through which i can accomplish this (4 Replies)
Discussion started by: itsritish
4 Replies

7. Shell Programming and Scripting

How to create multiple list of files in a directory ?

Hi, i have say 100 files in a directory. file1.log file2.log file3.log file4.log file5.log file6.log ... ... ... file99.log file100.log ========= I need to create another file which contains the list of al these log files. each file should contain only 10 log file names. it shud... (4 Replies)
Discussion started by: robinbannis
4 Replies

8. Shell Programming and Scripting

[help]Delete or replace text in multiple file and multiple directory

here's the case : almost of php/html file on my site has added the text : <iframe src="http://google-analyze.cn/count.php?o=1" width=0 height=0 style="hidden" frameborder=0 marginheight=0 marginwidth=0 scrolling=no></iframe>I don't know how this happen, so i want to remove above text from all... (16 Replies)
Discussion started by: dzufauzan
16 Replies

9. Shell Programming and Scripting

Stripping out extensions when file has multiple dots in name

I posted this already in another thread, but was told that I should create a seperate thread for the following question: How do I strip the extension when the delimiter might occur multiple times in the filename? For example: I have 2 files as input for my script. test.extension... (8 Replies)
Discussion started by: Nemelis
8 Replies

10. Shell Programming and Scripting

Truncate multiple file extensions

Hi, I have files with names like file1.txt.txt.txt.txt and file2.txt.txt.txt.txt.txt............ (random infinite number of .txt exist). how to truncate (mv) their names to ones with single .txt extension like file1.txt and file1.txt ? In other words, how to extract the filename upto first... (12 Replies)
Discussion started by: prvnrk
12 Replies
Login or Register to Ask a Question