Is there a way to get ls to listen for changes and update output similar to tail -f?
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
add a comment |
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
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 isinotify
.
– 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
add a comment |
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
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
terminal ls
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 isinotify
.
– 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
add a comment |
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 isinotify
.
– 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
add a comment |
2 Answers
2
active
oldest
votes
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
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 likewatch 'ls -ltr | tail'
may suit best. Note the quotes so that the shell does not interpret the|
.
– rexkogitans
Jan 11 at 14:06
add a comment |
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
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 thansleep 60
will allow.
– Christopher Schultz
Jan 11 at 18:09
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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
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 likewatch 'ls -ltr | tail'
may suit best. Note the quotes so that the shell does not interpret the|
.
– rexkogitans
Jan 11 at 14:06
add a comment |
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
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 likewatch 'ls -ltr | tail'
may suit best. Note the quotes so that the shell does not interpret the|
.
– rexkogitans
Jan 11 at 14:06
add a comment |
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
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
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 likewatch 'ls -ltr | tail'
may suit best. Note the quotes so that the shell does not interpret the|
.
– rexkogitans
Jan 11 at 14:06
add a comment |
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 likewatch '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
add a comment |
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
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 thansleep 60
will allow.
– Christopher Schultz
Jan 11 at 18:09
add a comment |
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
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 thansleep 60
will allow.
– Christopher Schultz
Jan 11 at 18:09
add a comment |
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
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
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 thansleep 60
will allow.
– Christopher Schultz
Jan 11 at 18:09
add a comment |
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 thansleep 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
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
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