Removing files under particular conditions (number of files, file age)2019 Community Moderator ElectionRemove files older than 5 days in UNIX (date in file name, not timestamp)Find files which are created a certain time after or before a particular file was createdWhat's wrong with this tar command?Files greater than 1 GB and older than 6 monthsRemoving files based on date given in filenameHow to delete files if a numerical part of their name is greater than a given number?Find files older than a given file - a few hoursfind and delete files older than specific days and have specific string in filenamesHow to create a new file with required columns from different multiple files in linux?What are the differences between rm and '-delete' in find?

What is the gram­mat­i­cal term for “‑ed” words like these?

Why do IPv6 unique local addresses have to have a /48 prefix?

Aligning individual characters/glyphs like a monospace font

Is possible to search in vim history?

API Access HTML/Javascript

Journal losing indexing services

Visiting the UK as unmarried couple

A social experiment. What is the worst that can happen?

ArcGIS not connecting to PostgreSQL db with all upper-case name

On a tidally locked planet, would time be quantized?

Why has "pence" been used in this sentence, not "pences"?

Have I saved too much for retirement so far?

Did arcade monitors have same pixel aspect ratio as TV sets?

How to align and center standalone amsmath equations?

Frequency of inspection at vegan restaurants

Can I use my Chinese passport to enter China after I acquired another citizenship?

Does having a TSA Pre-Check member in your flight reservation increase the chances that everyone gets Pre-Check?

Is XSS in canonical link possible?

Can somebody explain Brexit in a few child-proof sentences?

Can a significant change in incentives void an employment contract?

Should I install hardwood flooring or cabinets first?

What does this horizontal bar at the first measure mean?

Could the E-bike drivetrain wear down till needing replacement after 400 km?

Is a model fitted to data or is data fitted to a model?



Removing files under particular conditions (number of files, file age)



2019 Community Moderator ElectionRemove files older than 5 days in UNIX (date in file name, not timestamp)Find files which are created a certain time after or before a particular file was createdWhat's wrong with this tar command?Files greater than 1 GB and older than 6 monthsRemoving files based on date given in filenameHow to delete files if a numerical part of their name is greater than a given number?Find files older than a given file - a few hoursfind and delete files older than specific days and have specific string in filenamesHow to create a new file with required columns from different multiple files in linux?What are the differences between rm and '-delete' in find?










5















I want to create a shell script that will count files (1 hr older files) and if files are more than 1000, then delete all.



For read and delete I am using those command at putty



for count:



ls /tmp/ | grep 'ci_session*' | wc -l


for Delete files:



cd /tmp/
find . -name "ci_session*" -exec rm ;


#Update: for delete, i want to delete only 1 hr older files.



Here I want to add condition if total files are greater than 1000, then call delete command.










share|improve this question









New contributor




Yogesh Saroya is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.















  • 1





    Why not parse ls?

    – Cyrus
    yesterday











  • Greater than 1000 what? Lines long? Bytes? Or are you wanting to delete only if there are more than 1000 files?

    – Kusalananda
    yesterday












  • Are you okay with "Older than 1 hour" meaning last modified greater than 1 hour ago? Unix operating systems generally don't have a concept of creation time

    – Jesse_b
    yesterday












  • @Kusalananda number of files.

    – Yogesh Saroya
    yesterday















5















I want to create a shell script that will count files (1 hr older files) and if files are more than 1000, then delete all.



For read and delete I am using those command at putty



for count:



ls /tmp/ | grep 'ci_session*' | wc -l


for Delete files:



cd /tmp/
find . -name "ci_session*" -exec rm ;


#Update: for delete, i want to delete only 1 hr older files.



Here I want to add condition if total files are greater than 1000, then call delete command.










share|improve this question









New contributor




Yogesh Saroya is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.















  • 1





    Why not parse ls?

    – Cyrus
    yesterday











  • Greater than 1000 what? Lines long? Bytes? Or are you wanting to delete only if there are more than 1000 files?

    – Kusalananda
    yesterday












  • Are you okay with "Older than 1 hour" meaning last modified greater than 1 hour ago? Unix operating systems generally don't have a concept of creation time

    – Jesse_b
    yesterday












  • @Kusalananda number of files.

    – Yogesh Saroya
    yesterday













5












5








5


1






I want to create a shell script that will count files (1 hr older files) and if files are more than 1000, then delete all.



For read and delete I am using those command at putty



for count:



ls /tmp/ | grep 'ci_session*' | wc -l


for Delete files:



cd /tmp/
find . -name "ci_session*" -exec rm ;


#Update: for delete, i want to delete only 1 hr older files.



Here I want to add condition if total files are greater than 1000, then call delete command.










share|improve this question









New contributor




Yogesh Saroya is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.












I want to create a shell script that will count files (1 hr older files) and if files are more than 1000, then delete all.



For read and delete I am using those command at putty



for count:



ls /tmp/ | grep 'ci_session*' | wc -l


for Delete files:



cd /tmp/
find . -name "ci_session*" -exec rm ;


#Update: for delete, i want to delete only 1 hr older files.



Here I want to add condition if total files are greater than 1000, then call delete command.







linux bash find






share|improve this question









New contributor




Yogesh Saroya is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











share|improve this question









New contributor




Yogesh Saroya is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this question




share|improve this question








edited yesterday









Kusalananda

137k17258426




137k17258426






New contributor




Yogesh Saroya is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









asked yesterday









Yogesh SaroyaYogesh Saroya

1265




1265




New contributor




Yogesh Saroya is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





Yogesh Saroya is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






Yogesh Saroya is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







  • 1





    Why not parse ls?

    – Cyrus
    yesterday











  • Greater than 1000 what? Lines long? Bytes? Or are you wanting to delete only if there are more than 1000 files?

    – Kusalananda
    yesterday












  • Are you okay with "Older than 1 hour" meaning last modified greater than 1 hour ago? Unix operating systems generally don't have a concept of creation time

    – Jesse_b
    yesterday












  • @Kusalananda number of files.

    – Yogesh Saroya
    yesterday












  • 1





    Why not parse ls?

    – Cyrus
    yesterday











  • Greater than 1000 what? Lines long? Bytes? Or are you wanting to delete only if there are more than 1000 files?

    – Kusalananda
    yesterday












  • Are you okay with "Older than 1 hour" meaning last modified greater than 1 hour ago? Unix operating systems generally don't have a concept of creation time

    – Jesse_b
    yesterday












  • @Kusalananda number of files.

    – Yogesh Saroya
    yesterday







1




1





Why not parse ls?

– Cyrus
yesterday





Why not parse ls?

– Cyrus
yesterday













Greater than 1000 what? Lines long? Bytes? Or are you wanting to delete only if there are more than 1000 files?

– Kusalananda
yesterday






Greater than 1000 what? Lines long? Bytes? Or are you wanting to delete only if there are more than 1000 files?

– Kusalananda
yesterday














Are you okay with "Older than 1 hour" meaning last modified greater than 1 hour ago? Unix operating systems generally don't have a concept of creation time

– Jesse_b
yesterday






Are you okay with "Older than 1 hour" meaning last modified greater than 1 hour ago? Unix operating systems generally don't have a concept of creation time

– Jesse_b
yesterday














@Kusalananda number of files.

– Yogesh Saroya
yesterday





@Kusalananda number of files.

– Yogesh Saroya
yesterday










2 Answers
2






active

oldest

votes


















7














I interpreted your question as "How may I count the files, and if there are more than 1000, delete the ones that are older than one hour?".



Counting the names matching /tmp/ci_session* and doing something when there's more than 1000 of them:



set -- /tmp/ci_session*
if [ "$#" -gt 1000 ]; then
# something
fi


This sets the positional parameters to the names matching the pattern. The special variable $# then contains the number of positional parameters.



Deleting the files matching /tmp/ci_session* if their last modified time is more than an hour ago:



find /tmp -maxdepth 1 -type f -name 'ci_session*' -mmin +60 -delete


Taken together:



#!/bin/sh

set -- /tmp/ci_session*
if [ "$#" -gt 1000 ]; then
find /tmp -maxdepth 1 -type f -name 'ci_session*' -mmin +60 -delete
fi


The only thing to note here is that the count will be of any name matching the pattern (even of directory names, if there are any), while the find command will restrict the deletion to only regular files (i.e. not directories).






share|improve this answer

























  • I thought set would surely fail with "argument list too long" at some point, but no. I guess because set is a built-in?

    – l0b0
    yesterday












  • @l0b0 Exactly. Built-in utilities do not have any restrictions like that, and set is furthermore a special built-in utility, which means it needs to always be built into the shell (or it would not be able to set positional parameters nor shell options).

    – Kusalananda
    yesterday












  • I am getting this error. /bin/bash: /home/yogeshs/public_html/cleanup.sh: Permission denied i added sh file at public_html folder then added cron job (* * * * * /home/yogeshs/public_html/cleanup.sh )

    – Yogesh Saroya
    23 hours ago












  • @Kusalananda pls help getting Permission denied

    – Yogesh Saroya
    23 hours ago











  • @YogeshSaroya Either run the script with sh scriptname or make it executable with chmod +x scriptname and run it as you're trying to now.

    – Kusalananda
    21 hours ago


















5














As long as your find has an -mmin option you can do:



Using a shell script:



#!/bin/sh

files_dir=/tmp
file_count=$(find "$files_dir" -name 'ci_session*' -mmin 60 -exec echo x ; | wc -l)

if [ "$file_count" -gt 1000 ]; then
find "$files_dir" -name 'ci_session*' -mmin 60 -exec rm ;
fi


file_count will be set to the number of files found in the specified directory matching the pattern.



If file_count is greater than 1000 we will run find again and delete those files.




Using bash we can eliminate the second call to find with an array:



#!/bin/bash

files_dir=/tmp
mapfile -t files < <(find "$files_dir" -name 'ci_session*' -mmin 60)

if (($#files[@]>1000)); then
rm "$files[@]"
fi


Note: depending on how many files you expect to have the bash solution may run into your command line argument limit.






share|improve this answer

























  • could you please update delete command to delete only 1hr older files ?

    – Yogesh Saroya
    yesterday










Your Answer








StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "106"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);






Yogesh Saroya is a new contributor. Be nice, and check out our Code of Conduct.









draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f508198%2fremoving-files-under-particular-conditions-number-of-files-file-age%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























2 Answers
2






active

oldest

votes








2 Answers
2






active

oldest

votes









active

oldest

votes






active

oldest

votes









7














I interpreted your question as "How may I count the files, and if there are more than 1000, delete the ones that are older than one hour?".



Counting the names matching /tmp/ci_session* and doing something when there's more than 1000 of them:



set -- /tmp/ci_session*
if [ "$#" -gt 1000 ]; then
# something
fi


This sets the positional parameters to the names matching the pattern. The special variable $# then contains the number of positional parameters.



Deleting the files matching /tmp/ci_session* if their last modified time is more than an hour ago:



find /tmp -maxdepth 1 -type f -name 'ci_session*' -mmin +60 -delete


Taken together:



#!/bin/sh

set -- /tmp/ci_session*
if [ "$#" -gt 1000 ]; then
find /tmp -maxdepth 1 -type f -name 'ci_session*' -mmin +60 -delete
fi


The only thing to note here is that the count will be of any name matching the pattern (even of directory names, if there are any), while the find command will restrict the deletion to only regular files (i.e. not directories).






share|improve this answer

























  • I thought set would surely fail with "argument list too long" at some point, but no. I guess because set is a built-in?

    – l0b0
    yesterday












  • @l0b0 Exactly. Built-in utilities do not have any restrictions like that, and set is furthermore a special built-in utility, which means it needs to always be built into the shell (or it would not be able to set positional parameters nor shell options).

    – Kusalananda
    yesterday












  • I am getting this error. /bin/bash: /home/yogeshs/public_html/cleanup.sh: Permission denied i added sh file at public_html folder then added cron job (* * * * * /home/yogeshs/public_html/cleanup.sh )

    – Yogesh Saroya
    23 hours ago












  • @Kusalananda pls help getting Permission denied

    – Yogesh Saroya
    23 hours ago











  • @YogeshSaroya Either run the script with sh scriptname or make it executable with chmod +x scriptname and run it as you're trying to now.

    – Kusalananda
    21 hours ago















7














I interpreted your question as "How may I count the files, and if there are more than 1000, delete the ones that are older than one hour?".



Counting the names matching /tmp/ci_session* and doing something when there's more than 1000 of them:



set -- /tmp/ci_session*
if [ "$#" -gt 1000 ]; then
# something
fi


This sets the positional parameters to the names matching the pattern. The special variable $# then contains the number of positional parameters.



Deleting the files matching /tmp/ci_session* if their last modified time is more than an hour ago:



find /tmp -maxdepth 1 -type f -name 'ci_session*' -mmin +60 -delete


Taken together:



#!/bin/sh

set -- /tmp/ci_session*
if [ "$#" -gt 1000 ]; then
find /tmp -maxdepth 1 -type f -name 'ci_session*' -mmin +60 -delete
fi


The only thing to note here is that the count will be of any name matching the pattern (even of directory names, if there are any), while the find command will restrict the deletion to only regular files (i.e. not directories).






share|improve this answer

























  • I thought set would surely fail with "argument list too long" at some point, but no. I guess because set is a built-in?

    – l0b0
    yesterday












  • @l0b0 Exactly. Built-in utilities do not have any restrictions like that, and set is furthermore a special built-in utility, which means it needs to always be built into the shell (or it would not be able to set positional parameters nor shell options).

    – Kusalananda
    yesterday












  • I am getting this error. /bin/bash: /home/yogeshs/public_html/cleanup.sh: Permission denied i added sh file at public_html folder then added cron job (* * * * * /home/yogeshs/public_html/cleanup.sh )

    – Yogesh Saroya
    23 hours ago












  • @Kusalananda pls help getting Permission denied

    – Yogesh Saroya
    23 hours ago











  • @YogeshSaroya Either run the script with sh scriptname or make it executable with chmod +x scriptname and run it as you're trying to now.

    – Kusalananda
    21 hours ago













7












7








7







I interpreted your question as "How may I count the files, and if there are more than 1000, delete the ones that are older than one hour?".



Counting the names matching /tmp/ci_session* and doing something when there's more than 1000 of them:



set -- /tmp/ci_session*
if [ "$#" -gt 1000 ]; then
# something
fi


This sets the positional parameters to the names matching the pattern. The special variable $# then contains the number of positional parameters.



Deleting the files matching /tmp/ci_session* if their last modified time is more than an hour ago:



find /tmp -maxdepth 1 -type f -name 'ci_session*' -mmin +60 -delete


Taken together:



#!/bin/sh

set -- /tmp/ci_session*
if [ "$#" -gt 1000 ]; then
find /tmp -maxdepth 1 -type f -name 'ci_session*' -mmin +60 -delete
fi


The only thing to note here is that the count will be of any name matching the pattern (even of directory names, if there are any), while the find command will restrict the deletion to only regular files (i.e. not directories).






share|improve this answer















I interpreted your question as "How may I count the files, and if there are more than 1000, delete the ones that are older than one hour?".



Counting the names matching /tmp/ci_session* and doing something when there's more than 1000 of them:



set -- /tmp/ci_session*
if [ "$#" -gt 1000 ]; then
# something
fi


This sets the positional parameters to the names matching the pattern. The special variable $# then contains the number of positional parameters.



Deleting the files matching /tmp/ci_session* if their last modified time is more than an hour ago:



find /tmp -maxdepth 1 -type f -name 'ci_session*' -mmin +60 -delete


Taken together:



#!/bin/sh

set -- /tmp/ci_session*
if [ "$#" -gt 1000 ]; then
find /tmp -maxdepth 1 -type f -name 'ci_session*' -mmin +60 -delete
fi


The only thing to note here is that the count will be of any name matching the pattern (even of directory names, if there are any), while the find command will restrict the deletion to only regular files (i.e. not directories).







share|improve this answer














share|improve this answer



share|improve this answer








edited yesterday

























answered yesterday









KusalanandaKusalananda

137k17258426




137k17258426












  • I thought set would surely fail with "argument list too long" at some point, but no. I guess because set is a built-in?

    – l0b0
    yesterday












  • @l0b0 Exactly. Built-in utilities do not have any restrictions like that, and set is furthermore a special built-in utility, which means it needs to always be built into the shell (or it would not be able to set positional parameters nor shell options).

    – Kusalananda
    yesterday












  • I am getting this error. /bin/bash: /home/yogeshs/public_html/cleanup.sh: Permission denied i added sh file at public_html folder then added cron job (* * * * * /home/yogeshs/public_html/cleanup.sh )

    – Yogesh Saroya
    23 hours ago












  • @Kusalananda pls help getting Permission denied

    – Yogesh Saroya
    23 hours ago











  • @YogeshSaroya Either run the script with sh scriptname or make it executable with chmod +x scriptname and run it as you're trying to now.

    – Kusalananda
    21 hours ago

















  • I thought set would surely fail with "argument list too long" at some point, but no. I guess because set is a built-in?

    – l0b0
    yesterday












  • @l0b0 Exactly. Built-in utilities do not have any restrictions like that, and set is furthermore a special built-in utility, which means it needs to always be built into the shell (or it would not be able to set positional parameters nor shell options).

    – Kusalananda
    yesterday












  • I am getting this error. /bin/bash: /home/yogeshs/public_html/cleanup.sh: Permission denied i added sh file at public_html folder then added cron job (* * * * * /home/yogeshs/public_html/cleanup.sh )

    – Yogesh Saroya
    23 hours ago












  • @Kusalananda pls help getting Permission denied

    – Yogesh Saroya
    23 hours ago











  • @YogeshSaroya Either run the script with sh scriptname or make it executable with chmod +x scriptname and run it as you're trying to now.

    – Kusalananda
    21 hours ago
















I thought set would surely fail with "argument list too long" at some point, but no. I guess because set is a built-in?

– l0b0
yesterday






I thought set would surely fail with "argument list too long" at some point, but no. I guess because set is a built-in?

– l0b0
yesterday














@l0b0 Exactly. Built-in utilities do not have any restrictions like that, and set is furthermore a special built-in utility, which means it needs to always be built into the shell (or it would not be able to set positional parameters nor shell options).

– Kusalananda
yesterday






@l0b0 Exactly. Built-in utilities do not have any restrictions like that, and set is furthermore a special built-in utility, which means it needs to always be built into the shell (or it would not be able to set positional parameters nor shell options).

– Kusalananda
yesterday














I am getting this error. /bin/bash: /home/yogeshs/public_html/cleanup.sh: Permission denied i added sh file at public_html folder then added cron job (* * * * * /home/yogeshs/public_html/cleanup.sh )

– Yogesh Saroya
23 hours ago






I am getting this error. /bin/bash: /home/yogeshs/public_html/cleanup.sh: Permission denied i added sh file at public_html folder then added cron job (* * * * * /home/yogeshs/public_html/cleanup.sh )

– Yogesh Saroya
23 hours ago














@Kusalananda pls help getting Permission denied

– Yogesh Saroya
23 hours ago





@Kusalananda pls help getting Permission denied

– Yogesh Saroya
23 hours ago













@YogeshSaroya Either run the script with sh scriptname or make it executable with chmod +x scriptname and run it as you're trying to now.

– Kusalananda
21 hours ago





@YogeshSaroya Either run the script with sh scriptname or make it executable with chmod +x scriptname and run it as you're trying to now.

– Kusalananda
21 hours ago













5














As long as your find has an -mmin option you can do:



Using a shell script:



#!/bin/sh

files_dir=/tmp
file_count=$(find "$files_dir" -name 'ci_session*' -mmin 60 -exec echo x ; | wc -l)

if [ "$file_count" -gt 1000 ]; then
find "$files_dir" -name 'ci_session*' -mmin 60 -exec rm ;
fi


file_count will be set to the number of files found in the specified directory matching the pattern.



If file_count is greater than 1000 we will run find again and delete those files.




Using bash we can eliminate the second call to find with an array:



#!/bin/bash

files_dir=/tmp
mapfile -t files < <(find "$files_dir" -name 'ci_session*' -mmin 60)

if (($#files[@]>1000)); then
rm "$files[@]"
fi


Note: depending on how many files you expect to have the bash solution may run into your command line argument limit.






share|improve this answer

























  • could you please update delete command to delete only 1hr older files ?

    – Yogesh Saroya
    yesterday















5














As long as your find has an -mmin option you can do:



Using a shell script:



#!/bin/sh

files_dir=/tmp
file_count=$(find "$files_dir" -name 'ci_session*' -mmin 60 -exec echo x ; | wc -l)

if [ "$file_count" -gt 1000 ]; then
find "$files_dir" -name 'ci_session*' -mmin 60 -exec rm ;
fi


file_count will be set to the number of files found in the specified directory matching the pattern.



If file_count is greater than 1000 we will run find again and delete those files.




Using bash we can eliminate the second call to find with an array:



#!/bin/bash

files_dir=/tmp
mapfile -t files < <(find "$files_dir" -name 'ci_session*' -mmin 60)

if (($#files[@]>1000)); then
rm "$files[@]"
fi


Note: depending on how many files you expect to have the bash solution may run into your command line argument limit.






share|improve this answer

























  • could you please update delete command to delete only 1hr older files ?

    – Yogesh Saroya
    yesterday













5












5








5







As long as your find has an -mmin option you can do:



Using a shell script:



#!/bin/sh

files_dir=/tmp
file_count=$(find "$files_dir" -name 'ci_session*' -mmin 60 -exec echo x ; | wc -l)

if [ "$file_count" -gt 1000 ]; then
find "$files_dir" -name 'ci_session*' -mmin 60 -exec rm ;
fi


file_count will be set to the number of files found in the specified directory matching the pattern.



If file_count is greater than 1000 we will run find again and delete those files.




Using bash we can eliminate the second call to find with an array:



#!/bin/bash

files_dir=/tmp
mapfile -t files < <(find "$files_dir" -name 'ci_session*' -mmin 60)

if (($#files[@]>1000)); then
rm "$files[@]"
fi


Note: depending on how many files you expect to have the bash solution may run into your command line argument limit.






share|improve this answer















As long as your find has an -mmin option you can do:



Using a shell script:



#!/bin/sh

files_dir=/tmp
file_count=$(find "$files_dir" -name 'ci_session*' -mmin 60 -exec echo x ; | wc -l)

if [ "$file_count" -gt 1000 ]; then
find "$files_dir" -name 'ci_session*' -mmin 60 -exec rm ;
fi


file_count will be set to the number of files found in the specified directory matching the pattern.



If file_count is greater than 1000 we will run find again and delete those files.




Using bash we can eliminate the second call to find with an array:



#!/bin/bash

files_dir=/tmp
mapfile -t files < <(find "$files_dir" -name 'ci_session*' -mmin 60)

if (($#files[@]>1000)); then
rm "$files[@]"
fi


Note: depending on how many files you expect to have the bash solution may run into your command line argument limit.







share|improve this answer














share|improve this answer



share|improve this answer








edited yesterday

























answered yesterday









Jesse_bJesse_b

14k23572




14k23572












  • could you please update delete command to delete only 1hr older files ?

    – Yogesh Saroya
    yesterday

















  • could you please update delete command to delete only 1hr older files ?

    – Yogesh Saroya
    yesterday
















could you please update delete command to delete only 1hr older files ?

– Yogesh Saroya
yesterday





could you please update delete command to delete only 1hr older files ?

– Yogesh Saroya
yesterday










Yogesh Saroya is a new contributor. Be nice, and check out our Code of Conduct.









draft saved

draft discarded


















Yogesh Saroya is a new contributor. Be nice, and check out our Code of Conduct.












Yogesh Saroya is a new contributor. Be nice, and check out our Code of Conduct.











Yogesh Saroya is a new contributor. Be nice, and check out our Code of Conduct.














Thanks for contributing an answer to Unix & Linux Stack Exchange!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f508198%2fremoving-files-under-particular-conditions-number-of-files-file-age%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

getting Checkpoint VPN SSL Network Extender working in the command lineHow to connect to CheckPoint VPN on Ubuntu 18.04LTS?Will the Linux ( red-hat ) Open VPNC Client connect to checkpoint or nortel VPN gateways?VPN client for linux machine + support checkpoint gatewayVPN SSL Network Extender in FirefoxLinux Checkpoint SNX tool configuration issuesCheck Point - Connect under Linux - snx + OTPSNX VPN Ububuntu 18.XXUsing Checkpoint VPN SSL Network Extender CLI with certificateVPN with network manager (nm-applet) is not workingWill the Linux ( red-hat ) Open VPNC Client connect to checkpoint or nortel VPN gateways?VPN client for linux machine + support checkpoint gatewayImport VPN config files to NetworkManager from command lineTrouble connecting to VPN using network-manager, while command line worksStart a VPN connection with PPTP protocol on command linestarting a docker service daemon breaks the vpn networkCan't connect to vpn with Network-managerVPN SSL Network Extender in FirefoxUsing Checkpoint VPN SSL Network Extender CLI with certificate

Cannot Extend partition with GParted The 2019 Stack Overflow Developer Survey Results Are In Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) 2019 Community Moderator Election ResultsCan't increase partition size with GParted?GParted doesn't recognize the unallocated space after my current partitionWhat is the best way to add unallocated space located before to Ubuntu 12.04 partition with GParted live?I can't figure out how to extend my Arch home partition into free spaceGparted Linux Mint 18.1 issueTrying to extend but swap partition is showing as Unknown in Gparted, shows proper from fdiskRearrange partitions in gparted to extend a partitionUnable to extend partition even though unallocated space is next to it using GPartedAllocate free space to root partitiongparted: how to merge unallocated space with a partition

Marilyn Monroe Ny fiainany manokana | Jereo koa | Meny fitetezanafanitarana azy.