Sponsored Content
Full Discussion: Touch Challenge
Top Forums UNIX for Dummies Questions & Answers Touch Challenge Post 302682183 by raggmopp on Sunday 5th of August 2012 06:19:27 PM
Old 08-05-2012
Yes, you can include the option(s) to find that allow you to sort alphabetically, numerically, chronologically, etc. Example, you may be looking for files between 45 days and 90 days and you want them sorted chronologically;
Code:
find . -mtime +45 -mtime -90 -type f -exec ls -lart {} \;

(assuming you are already in the cwd and you do not have too many files that forces you to use xargs)

The 'ls -lart' will sort chronologically (date) in ascending order.

From the list that is generated you can execute the 'touch' command, or the 'cp' command, or the 'mv' command, or the 'tr' command, etc. Using the example from above;

Code:
find . -mtime +45 -mtime -90 -type f -exec ls -rt {} \; | while read line
do
<your commands>
done

Find type files that are between 45 and 90 days old (that would be mtime - when the file was last modified) and sort them by date in ascending order (if you leave off the 'la' from 'ls -lart' you are left with 'ls -rt' - you will not see the perms and dates but it is still sorting). The resulting files are then piped through a while loop and each line is read individually and that allows you to act on each line depending on some condition, i.e., the date. The <your commands> can be your touch command, acting on each line that is produced from the output of the find command.

As I mentioned above, if you have too many files you will need to use the xargs with your find command.

The find command by itself will do just that, find what you are looking for. Options added to the find command allow you to find files/directories based on some conditional, the "-mtime" or "-type" for example. Using the "-depth" option with find will allow you to find . files (hidden) as well.

The find command can be very simple or it can be very complex; you could have it sort, convert upper to lower, reverse the file names, etc. It's what you include with the find command that allows you to be choosy.

Almost always, there is more than 1 way to do things in UNIX/Linux. You may find another way to do what you want that we did not list here. And that is usually good, you are thinking instead of just copying what we said.

You may choose to use a perl 1 liner to identify and select the files you want.
Code:
find . -depth | perl -lne 'print if /1st date/ && /2nd date/ &&

and so on ...

Last edited by raggmopp; 08-05-2012 at 07:31 PM..
 

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

safeword challenge

Hi, there are some servers here at work which issue a Safeword challenge after I login. Can anyone tell me exactly how the challenge/response system works? In particular, how are the valid keys decided? (2 Replies)
Discussion started by: blowtorch
2 Replies

2. Shell Programming and Scripting

camma challenge (in ksh)

Hi Gurus, I am a starter in ksh scripting I have a requirment where i need to ucertain that each line contain only 5 occurances of "," (comma) in a CSV file ; I don't want to use perl,is it possible in ksh;; Kindly help I am going to read CSV file and ; redirect all those lines which are... (3 Replies)
Discussion started by: Amresh Dubey
3 Replies

3. Shell Programming and Scripting

AWK Challenge

I have the following text Microsoft iSCSI Initiator version 2.0 Build 3497 Targets List: iqn.2001-05.com.equallogic:0-8a0906-daef43402-138000002a4477ba-grsrv12-extra iqn.2001-05.com.equallogic:0-8a0906-986f43402-520000002b447951-exchange ... (9 Replies)
Discussion started by: netmedic
9 Replies

4. Shell Programming and Scripting

sed replacement, challenge one!!!!

Hi all, Thanks in advanced. This question really bothered me much. What i want is to replace any times of repeated 'TB' to 'T', below is example. It can be fullfil by AWK and perl, but my desire is using SED to realize it. So here means we treat TB as a whole part, which means 's/TB*/T/'... (4 Replies)
Discussion started by: summer_cherry
4 Replies

5. Shell Programming and Scripting

sed xml challenge

I have a web xml file that looks like this: <allinfo> <info> <a>Name1<\a> <b>address1<\b> <c>phone1<c> <\info> <info> <a>Name2<\a> <b>address2<\b> <c>phone2<c> <\info> <\allinfo> I want to use sed to... (2 Replies)
Discussion started by: katrvu
2 Replies

6. Shell Programming and Scripting

regex challenge

Here's a regex substitution operation that has stumped me with sed: How do you convert lines like this: first.key ?{x.y.z} second.key ?{xa.ys.zz.s} third.key ?{xa.k} to: first.key ?{x_y_z} second.key ?{xa_ys_zz_s} third.key ?{xa_k} So i'm basically converting all the... (11 Replies)
Discussion started by: neked
11 Replies

7. Shell Programming and Scripting

Need complex script, anyone up for a challenge?

Default shell is /usr/bin/zsh Script will be running #!/bin/bash Need to pull information from database while using other scripts already made (not by me). Ok, so i need a script pulling certain information about a customer's router interfaces. I am using a ROUTER-DNS-NAME as variable $1 I... (3 Replies)
Discussion started by: ///NNM
3 Replies

8. UNIX for Dummies Questions & Answers

Touch all files and subdirectories (recursive touch)

I have a folder with many subdirectories and i need to set the modified date to today for everything in it. Please help, thanks! I tried something i found online, find . -print0 | xargs -r0 touch but I got the error: xargs: illegal option -- r (5 Replies)
Discussion started by: glev2005
5 Replies

9. Shell Programming and Scripting

PS1 challenge

Ok then i Have a challenge for you : Give me PS1 so that it always display the least 2 levels of directory (except if i am above of course) I want it this way : so if i go to / /home/ /home/user /home/user/whatever /home/user/whatever1/whatever2 my PS1 should respectively... (12 Replies)
Discussion started by: ctsgnb
12 Replies

10. Shell Programming and Scripting

Anyone like a challenge?

I have searched through google, and this forum to try and find the answer, but alas, nothing quite hits the whole answer. I am trying to read the last line (or lines) of some log files. I do this often. The files are named sequentially, using the date as part of the file name, and appending... (18 Replies)
Discussion started by: BatterBits
18 Replies
File::Find::Rule::Procedural(3) 			User Contributed Perl Documentation			   File::Find::Rule::Procedural(3)

NAME
File::Find::Rule::Procedural - File::Find::Rule's procedural interface SYNOPSIS
use File::Find::Rule; # find all .pm files, procedurally my @files = find(file => name => '*.pm', in => @INC); DESCRIPTION
In addition to the regular object-oriented interface, File::Find::Rule provides two subroutines for you to use. "find( @clauses )" "rule( @clauses )" "find" and "rule" can be used to invoke any methods available to the OO version. "rule" is a synonym for "find" Passing more than one value to a clause is done with an anonymous array: my $finder = find( name => [ '*.mp3', '*.ogg' ] ); "find" and "rule" both return a File::Find::Rule instance, unless one of the arguments is "in", in which case it returns a list of things that match the rule. my @files = find( name => [ '*.mp3', '*.ogg' ], in => $ENV{HOME} ); Please note that "in" will be the last clause evaluated, and so this code will search for mp3s regardless of size. my @files = find( name => '*.mp3', in => $ENV{HOME}, size => '<2k' ); ^ | Clause processing stopped here ------/ It is also possible to invert a single rule by prefixing it with "!" like so: # large files that aren't videos my @files = find( file => '!name' => [ '*.avi', '*.mov' ], size => '>20M', in => $ENV{HOME} ); AUTHOR
Richard Clamp <richardc@unixbeard.net> COPYRIGHT
Copyright (C) 2003 Richard Clamp. All Rights Reserved. This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. SEE ALSO
File::Find::Rule perl v5.16.3 2011-09-19 File::Find::Rule::Procedural(3)
All times are GMT -4. The time now is 05:36 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy