Is there a way to get ls to listen for changes and update output similar to tail -f?












2















I have a process that creates many files in a known directory, and the only way to tell how far along it is is to type ls manually. Is there a way to make the output of ls update automatically as new files are created, similar to how tail -f works? Because of their names, every new file appears at the end of the list, so I wouldn't have to worry about them appearing in the middle.










share|improve this question























  • Is the program that creates the files something that instead could possibly be updated to output how far it has come, alternatively how far it has left to go? If not, a tool that is often used to detect file modifications/creation is inotify.

    – Kusalananda
    Jan 11 at 7:25











  • In this specific instance, yes. However I've bumped into this problem in cases where I could not edit the program, and because I couldn't find an answer to this problem on the internet. I figured it would be a useful trick to know, and may help someone else out if there is a solution.

    – David Scott
    Jan 11 at 7:28











  • Also, doing this without editing the program does not restrict you to receiving the output in the launch terminal, and can be turned on and off.

    – David Scott
    Jan 11 at 7:29
















2















I have a process that creates many files in a known directory, and the only way to tell how far along it is is to type ls manually. Is there a way to make the output of ls update automatically as new files are created, similar to how tail -f works? Because of their names, every new file appears at the end of the list, so I wouldn't have to worry about them appearing in the middle.










share|improve this question























  • Is the program that creates the files something that instead could possibly be updated to output how far it has come, alternatively how far it has left to go? If not, a tool that is often used to detect file modifications/creation is inotify.

    – Kusalananda
    Jan 11 at 7:25











  • In this specific instance, yes. However I've bumped into this problem in cases where I could not edit the program, and because I couldn't find an answer to this problem on the internet. I figured it would be a useful trick to know, and may help someone else out if there is a solution.

    – David Scott
    Jan 11 at 7:28











  • Also, doing this without editing the program does not restrict you to receiving the output in the launch terminal, and can be turned on and off.

    – David Scott
    Jan 11 at 7:29














2












2








2








I have a process that creates many files in a known directory, and the only way to tell how far along it is is to type ls manually. Is there a way to make the output of ls update automatically as new files are created, similar to how tail -f works? Because of their names, every new file appears at the end of the list, so I wouldn't have to worry about them appearing in the middle.










share|improve this question














I have a process that creates many files in a known directory, and the only way to tell how far along it is is to type ls manually. Is there a way to make the output of ls update automatically as new files are created, similar to how tail -f works? Because of their names, every new file appears at the end of the list, so I wouldn't have to worry about them appearing in the middle.







terminal ls






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Jan 11 at 7:21









David ScottDavid Scott

132




132













  • Is the program that creates the files something that instead could possibly be updated to output how far it has come, alternatively how far it has left to go? If not, a tool that is often used to detect file modifications/creation is inotify.

    – Kusalananda
    Jan 11 at 7:25











  • In this specific instance, yes. However I've bumped into this problem in cases where I could not edit the program, and because I couldn't find an answer to this problem on the internet. I figured it would be a useful trick to know, and may help someone else out if there is a solution.

    – David Scott
    Jan 11 at 7:28











  • Also, doing this without editing the program does not restrict you to receiving the output in the launch terminal, and can be turned on and off.

    – David Scott
    Jan 11 at 7:29



















  • Is the program that creates the files something that instead could possibly be updated to output how far it has come, alternatively how far it has left to go? If not, a tool that is often used to detect file modifications/creation is inotify.

    – Kusalananda
    Jan 11 at 7:25











  • In this specific instance, yes. However I've bumped into this problem in cases where I could not edit the program, and because I couldn't find an answer to this problem on the internet. I figured it would be a useful trick to know, and may help someone else out if there is a solution.

    – David Scott
    Jan 11 at 7:28











  • Also, doing this without editing the program does not restrict you to receiving the output in the launch terminal, and can be turned on and off.

    – David Scott
    Jan 11 at 7:29

















Is the program that creates the files something that instead could possibly be updated to output how far it has come, alternatively how far it has left to go? If not, a tool that is often used to detect file modifications/creation is inotify.

– Kusalananda
Jan 11 at 7:25





Is the program that creates the files something that instead could possibly be updated to output how far it has come, alternatively how far it has left to go? If not, a tool that is often used to detect file modifications/creation is inotify.

– Kusalananda
Jan 11 at 7:25













In this specific instance, yes. However I've bumped into this problem in cases where I could not edit the program, and because I couldn't find an answer to this problem on the internet. I figured it would be a useful trick to know, and may help someone else out if there is a solution.

– David Scott
Jan 11 at 7:28





In this specific instance, yes. However I've bumped into this problem in cases where I could not edit the program, and because I couldn't find an answer to this problem on the internet. I figured it would be a useful trick to know, and may help someone else out if there is a solution.

– David Scott
Jan 11 at 7:28













Also, doing this without editing the program does not restrict you to receiving the output in the launch terminal, and can be turned on and off.

– David Scott
Jan 11 at 7:29





Also, doing this without editing the program does not restrict you to receiving the output in the launch terminal, and can be turned on and off.

– David Scott
Jan 11 at 7:29










2 Answers
2






active

oldest

votes


















10














You can use command like:



watch ls


to loop execution of ls command



If the listing is too long you can add -C to ls



watch ls -C


Or you can create explicit loop with while



while [ 1 ]
do
clear
ls
sleep 60
done





share|improve this answer





















  • 1





    Marked this as the answer for being the closest to my intentions, with the added benefit of allowing for the multi-column output of ls.

    – David Scott
    Jan 11 at 7:54






  • 1





    I turned this into a one-line terminal command to make it into an alias more easily: while [ 1 ]; do clear; ls; sleep 60; done

    – David Scott
    Jan 11 at 7:55











  • @DavidScott, sure, that's possible, feel free to tune the code according to your environment and requirements

    – Romeo Ninov
    Jan 11 at 7:57






  • 2





    Since you want to watch a progress, something like watch 'ls -ltr | tail' may suit best. Note the quotes so that the shell does not interpret the |.

    – rexkogitans
    Jan 11 at 14:06





















8














You can use a script like this that monitor every changes and after any change it makes a ls sorted by date. To be able to execute it you would need inotify-tools installed. The script would be the following:



#!/bin/bash
DIRECTORY="your_directory_path"
inotifywait -m -r -e create --format '%w%f' "${DIRECTORY}" | while read NEW
do
ls -hltr
done





share|improve this answer
























  • I like this answer because it doesn't "poll" and update every X seconds. Instead, it will trigger a refresh when there is a reason to refresh. Presumably, it will react more quickly than sleep 60 will allow.

    – Christopher Schultz
    Jan 11 at 18:09











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
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f493879%2fis-there-a-way-to-get-ls-to-listen-for-changes-and-update-output-similar-to-tail%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









10














You can use command like:



watch ls


to loop execution of ls command



If the listing is too long you can add -C to ls



watch ls -C


Or you can create explicit loop with while



while [ 1 ]
do
clear
ls
sleep 60
done





share|improve this answer





















  • 1





    Marked this as the answer for being the closest to my intentions, with the added benefit of allowing for the multi-column output of ls.

    – David Scott
    Jan 11 at 7:54






  • 1





    I turned this into a one-line terminal command to make it into an alias more easily: while [ 1 ]; do clear; ls; sleep 60; done

    – David Scott
    Jan 11 at 7:55











  • @DavidScott, sure, that's possible, feel free to tune the code according to your environment and requirements

    – Romeo Ninov
    Jan 11 at 7:57






  • 2





    Since you want to watch a progress, something like watch 'ls -ltr | tail' may suit best. Note the quotes so that the shell does not interpret the |.

    – rexkogitans
    Jan 11 at 14:06


















10














You can use command like:



watch ls


to loop execution of ls command



If the listing is too long you can add -C to ls



watch ls -C


Or you can create explicit loop with while



while [ 1 ]
do
clear
ls
sleep 60
done





share|improve this answer





















  • 1





    Marked this as the answer for being the closest to my intentions, with the added benefit of allowing for the multi-column output of ls.

    – David Scott
    Jan 11 at 7:54






  • 1





    I turned this into a one-line terminal command to make it into an alias more easily: while [ 1 ]; do clear; ls; sleep 60; done

    – David Scott
    Jan 11 at 7:55











  • @DavidScott, sure, that's possible, feel free to tune the code according to your environment and requirements

    – Romeo Ninov
    Jan 11 at 7:57






  • 2





    Since you want to watch a progress, something like watch 'ls -ltr | tail' may suit best. Note the quotes so that the shell does not interpret the |.

    – rexkogitans
    Jan 11 at 14:06
















10












10








10







You can use command like:



watch ls


to loop execution of ls command



If the listing is too long you can add -C to ls



watch ls -C


Or you can create explicit loop with while



while [ 1 ]
do
clear
ls
sleep 60
done





share|improve this answer















You can use command like:



watch ls


to loop execution of ls command



If the listing is too long you can add -C to ls



watch ls -C


Or you can create explicit loop with while



while [ 1 ]
do
clear
ls
sleep 60
done






share|improve this answer














share|improve this answer



share|improve this answer








edited Jan 11 at 7:57









roaima

43.4k553116




43.4k553116










answered Jan 11 at 7:36









Romeo NinovRomeo Ninov

5,71831928




5,71831928








  • 1





    Marked this as the answer for being the closest to my intentions, with the added benefit of allowing for the multi-column output of ls.

    – David Scott
    Jan 11 at 7:54






  • 1





    I turned this into a one-line terminal command to make it into an alias more easily: while [ 1 ]; do clear; ls; sleep 60; done

    – David Scott
    Jan 11 at 7:55











  • @DavidScott, sure, that's possible, feel free to tune the code according to your environment and requirements

    – Romeo Ninov
    Jan 11 at 7:57






  • 2





    Since you want to watch a progress, something like watch 'ls -ltr | tail' may suit best. Note the quotes so that the shell does not interpret the |.

    – rexkogitans
    Jan 11 at 14:06
















  • 1





    Marked this as the answer for being the closest to my intentions, with the added benefit of allowing for the multi-column output of ls.

    – David Scott
    Jan 11 at 7:54






  • 1





    I turned this into a one-line terminal command to make it into an alias more easily: while [ 1 ]; do clear; ls; sleep 60; done

    – David Scott
    Jan 11 at 7:55











  • @DavidScott, sure, that's possible, feel free to tune the code according to your environment and requirements

    – Romeo Ninov
    Jan 11 at 7:57






  • 2





    Since you want to watch a progress, something like watch 'ls -ltr | tail' may suit best. Note the quotes so that the shell does not interpret the |.

    – rexkogitans
    Jan 11 at 14:06










1




1





Marked this as the answer for being the closest to my intentions, with the added benefit of allowing for the multi-column output of ls.

– David Scott
Jan 11 at 7:54





Marked this as the answer for being the closest to my intentions, with the added benefit of allowing for the multi-column output of ls.

– David Scott
Jan 11 at 7:54




1




1





I turned this into a one-line terminal command to make it into an alias more easily: while [ 1 ]; do clear; ls; sleep 60; done

– David Scott
Jan 11 at 7:55





I turned this into a one-line terminal command to make it into an alias more easily: while [ 1 ]; do clear; ls; sleep 60; done

– David Scott
Jan 11 at 7:55













@DavidScott, sure, that's possible, feel free to tune the code according to your environment and requirements

– Romeo Ninov
Jan 11 at 7:57





@DavidScott, sure, that's possible, feel free to tune the code according to your environment and requirements

– Romeo Ninov
Jan 11 at 7:57




2




2





Since you want to watch a progress, something like watch 'ls -ltr | tail' may suit best. Note the quotes so that the shell does not interpret the |.

– rexkogitans
Jan 11 at 14:06







Since you want to watch a progress, something like watch 'ls -ltr | tail' may suit best. Note the quotes so that the shell does not interpret the |.

– rexkogitans
Jan 11 at 14:06















8














You can use a script like this that monitor every changes and after any change it makes a ls sorted by date. To be able to execute it you would need inotify-tools installed. The script would be the following:



#!/bin/bash
DIRECTORY="your_directory_path"
inotifywait -m -r -e create --format '%w%f' "${DIRECTORY}" | while read NEW
do
ls -hltr
done





share|improve this answer
























  • I like this answer because it doesn't "poll" and update every X seconds. Instead, it will trigger a refresh when there is a reason to refresh. Presumably, it will react more quickly than sleep 60 will allow.

    – Christopher Schultz
    Jan 11 at 18:09
















8














You can use a script like this that monitor every changes and after any change it makes a ls sorted by date. To be able to execute it you would need inotify-tools installed. The script would be the following:



#!/bin/bash
DIRECTORY="your_directory_path"
inotifywait -m -r -e create --format '%w%f' "${DIRECTORY}" | while read NEW
do
ls -hltr
done





share|improve this answer
























  • I like this answer because it doesn't "poll" and update every X seconds. Instead, it will trigger a refresh when there is a reason to refresh. Presumably, it will react more quickly than sleep 60 will allow.

    – Christopher Schultz
    Jan 11 at 18:09














8












8








8







You can use a script like this that monitor every changes and after any change it makes a ls sorted by date. To be able to execute it you would need inotify-tools installed. The script would be the following:



#!/bin/bash
DIRECTORY="your_directory_path"
inotifywait -m -r -e create --format '%w%f' "${DIRECTORY}" | while read NEW
do
ls -hltr
done





share|improve this answer













You can use a script like this that monitor every changes and after any change it makes a ls sorted by date. To be able to execute it you would need inotify-tools installed. The script would be the following:



#!/bin/bash
DIRECTORY="your_directory_path"
inotifywait -m -r -e create --format '%w%f' "${DIRECTORY}" | while read NEW
do
ls -hltr
done






share|improve this answer












share|improve this answer



share|improve this answer










answered Jan 11 at 7:42









DaselDasel

4497




4497













  • I like this answer because it doesn't "poll" and update every X seconds. Instead, it will trigger a refresh when there is a reason to refresh. Presumably, it will react more quickly than sleep 60 will allow.

    – Christopher Schultz
    Jan 11 at 18:09



















  • I like this answer because it doesn't "poll" and update every X seconds. Instead, it will trigger a refresh when there is a reason to refresh. Presumably, it will react more quickly than sleep 60 will allow.

    – Christopher Schultz
    Jan 11 at 18:09

















I like this answer because it doesn't "poll" and update every X seconds. Instead, it will trigger a refresh when there is a reason to refresh. Presumably, it will react more quickly than sleep 60 will allow.

– Christopher Schultz
Jan 11 at 18:09





I like this answer because it doesn't "poll" and update every X seconds. Instead, it will trigger a refresh when there is a reason to refresh. Presumably, it will react more quickly than sleep 60 will allow.

– Christopher Schultz
Jan 11 at 18:09


















draft saved

draft discarded




















































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%2f493879%2fis-there-a-way-to-get-ls-to-listen-for-changes-and-update-output-similar-to-tail%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

How to change which sound is reproduced for terminal bell?

Title Spacing in Bjornstrup Chapter, Removing Chapter Number From Contents

Can I use Tabulator js library in my java Spring + Thymeleaf project?