Bash loop for detecting equal folder sizes
Clash Royale CLAN TAG#URR8PPP
up vote
-1
down vote
favorite
I would like to detect when the transfer of a large amount of files is completed. I would like to accomplish this by detecting the size of the folder with a time delay.
Below is what I have done,
#!/bin/bash
firstSize= du -s /Users/test/Desktop/folder | cut -f1
sleep 3
newSize= du -s /Users/test/Desktop/folder | cut -f1
until [ $firstSize -eq $newSize ]
do
firstSize=$newSize
sleep 3
newSize= du -s /Users/test/Desktop/folder | cut -f1
done
echo 'Done'
The until loop is not working because even when the firstSize and the newSize are not equal the loop completes. I am not familiar with writing Bash scripts so I am just making mistakes. This loop is ported over from an applescript I had wrote for the same purpose but I need something more reliable.
shell-script osx
 |Â
show 2 more comments
up vote
-1
down vote
favorite
I would like to detect when the transfer of a large amount of files is completed. I would like to accomplish this by detecting the size of the folder with a time delay.
Below is what I have done,
#!/bin/bash
firstSize= du -s /Users/test/Desktop/folder | cut -f1
sleep 3
newSize= du -s /Users/test/Desktop/folder | cut -f1
until [ $firstSize -eq $newSize ]
do
firstSize=$newSize
sleep 3
newSize= du -s /Users/test/Desktop/folder | cut -f1
done
echo 'Done'
The until loop is not working because even when the firstSize and the newSize are not equal the loop completes. I am not familiar with writing Bash scripts so I am just making mistakes. This loop is ported over from an applescript I had wrote for the same purpose but I need something more reliable.
shell-script osx
2
See How can I assign the output of a command to a shell variable?
â steeldriver
Sep 16 at 21:35
1
Can't you measure the file size rather than the directory size? Could your sending process send the file with a temporary suffix (eg.tmp
) and then rename it on successful transfer? (Does OSX haveinotify
? If so that can provide a far more efficient way of determining that a file has landed.)
â roaima
Sep 16 at 21:37
Hi @lightwalker. Would you please add more clarifications about what you would like to achieve, so we can help you more efficiently!! How do you transfer your files between folders? do you usersync
,scp
, ... ect ? What is the source folder and what is the target folder? Do you want to detect the equality between the source and target folders? let's say that you are usingrsync
to transfer files between folderA
to folderB
, let's say the the folders sizesA=B
what next? what is the purpose of the script?
â Goro
Sep 16 at 21:57
Thanks @steeldriver that link helped and it is now working.
â lightwalker
Sep 16 at 22:34
@roaima thanks, the reason for the folder rather than the file is I have do not have control over the file.
â lightwalker
Sep 16 at 22:35
 |Â
show 2 more comments
up vote
-1
down vote
favorite
up vote
-1
down vote
favorite
I would like to detect when the transfer of a large amount of files is completed. I would like to accomplish this by detecting the size of the folder with a time delay.
Below is what I have done,
#!/bin/bash
firstSize= du -s /Users/test/Desktop/folder | cut -f1
sleep 3
newSize= du -s /Users/test/Desktop/folder | cut -f1
until [ $firstSize -eq $newSize ]
do
firstSize=$newSize
sleep 3
newSize= du -s /Users/test/Desktop/folder | cut -f1
done
echo 'Done'
The until loop is not working because even when the firstSize and the newSize are not equal the loop completes. I am not familiar with writing Bash scripts so I am just making mistakes. This loop is ported over from an applescript I had wrote for the same purpose but I need something more reliable.
shell-script osx
I would like to detect when the transfer of a large amount of files is completed. I would like to accomplish this by detecting the size of the folder with a time delay.
Below is what I have done,
#!/bin/bash
firstSize= du -s /Users/test/Desktop/folder | cut -f1
sleep 3
newSize= du -s /Users/test/Desktop/folder | cut -f1
until [ $firstSize -eq $newSize ]
do
firstSize=$newSize
sleep 3
newSize= du -s /Users/test/Desktop/folder | cut -f1
done
echo 'Done'
The until loop is not working because even when the firstSize and the newSize are not equal the loop completes. I am not familiar with writing Bash scripts so I am just making mistakes. This loop is ported over from an applescript I had wrote for the same purpose but I need something more reliable.
shell-script osx
shell-script osx
edited Sep 16 at 23:36
asked Sep 16 at 21:22
lightwalker
44
44
2
See How can I assign the output of a command to a shell variable?
â steeldriver
Sep 16 at 21:35
1
Can't you measure the file size rather than the directory size? Could your sending process send the file with a temporary suffix (eg.tmp
) and then rename it on successful transfer? (Does OSX haveinotify
? If so that can provide a far more efficient way of determining that a file has landed.)
â roaima
Sep 16 at 21:37
Hi @lightwalker. Would you please add more clarifications about what you would like to achieve, so we can help you more efficiently!! How do you transfer your files between folders? do you usersync
,scp
, ... ect ? What is the source folder and what is the target folder? Do you want to detect the equality between the source and target folders? let's say that you are usingrsync
to transfer files between folderA
to folderB
, let's say the the folders sizesA=B
what next? what is the purpose of the script?
â Goro
Sep 16 at 21:57
Thanks @steeldriver that link helped and it is now working.
â lightwalker
Sep 16 at 22:34
@roaima thanks, the reason for the folder rather than the file is I have do not have control over the file.
â lightwalker
Sep 16 at 22:35
 |Â
show 2 more comments
2
See How can I assign the output of a command to a shell variable?
â steeldriver
Sep 16 at 21:35
1
Can't you measure the file size rather than the directory size? Could your sending process send the file with a temporary suffix (eg.tmp
) and then rename it on successful transfer? (Does OSX haveinotify
? If so that can provide a far more efficient way of determining that a file has landed.)
â roaima
Sep 16 at 21:37
Hi @lightwalker. Would you please add more clarifications about what you would like to achieve, so we can help you more efficiently!! How do you transfer your files between folders? do you usersync
,scp
, ... ect ? What is the source folder and what is the target folder? Do you want to detect the equality between the source and target folders? let's say that you are usingrsync
to transfer files between folderA
to folderB
, let's say the the folders sizesA=B
what next? what is the purpose of the script?
â Goro
Sep 16 at 21:57
Thanks @steeldriver that link helped and it is now working.
â lightwalker
Sep 16 at 22:34
@roaima thanks, the reason for the folder rather than the file is I have do not have control over the file.
â lightwalker
Sep 16 at 22:35
2
2
See How can I assign the output of a command to a shell variable?
â steeldriver
Sep 16 at 21:35
See How can I assign the output of a command to a shell variable?
â steeldriver
Sep 16 at 21:35
1
1
Can't you measure the file size rather than the directory size? Could your sending process send the file with a temporary suffix (eg
.tmp
) and then rename it on successful transfer? (Does OSX have inotify
? If so that can provide a far more efficient way of determining that a file has landed.)â roaima
Sep 16 at 21:37
Can't you measure the file size rather than the directory size? Could your sending process send the file with a temporary suffix (eg
.tmp
) and then rename it on successful transfer? (Does OSX have inotify
? If so that can provide a far more efficient way of determining that a file has landed.)â roaima
Sep 16 at 21:37
Hi @lightwalker. Would you please add more clarifications about what you would like to achieve, so we can help you more efficiently!! How do you transfer your files between folders? do you use
rsync
, scp
, ... ect ? What is the source folder and what is the target folder? Do you want to detect the equality between the source and target folders? let's say that you are using rsync
to transfer files between folder A
to folder B
, let's say the the folders sizes A=B
what next? what is the purpose of the script?â Goro
Sep 16 at 21:57
Hi @lightwalker. Would you please add more clarifications about what you would like to achieve, so we can help you more efficiently!! How do you transfer your files between folders? do you use
rsync
, scp
, ... ect ? What is the source folder and what is the target folder? Do you want to detect the equality between the source and target folders? let's say that you are using rsync
to transfer files between folder A
to folder B
, let's say the the folders sizes A=B
what next? what is the purpose of the script?â Goro
Sep 16 at 21:57
Thanks @steeldriver that link helped and it is now working.
â lightwalker
Sep 16 at 22:34
Thanks @steeldriver that link helped and it is now working.
â lightwalker
Sep 16 at 22:34
@roaima thanks, the reason for the folder rather than the file is I have do not have control over the file.
â lightwalker
Sep 16 at 22:35
@roaima thanks, the reason for the folder rather than the file is I have do not have control over the file.
â lightwalker
Sep 16 at 22:35
 |Â
show 2 more comments
1 Answer
1
active
oldest
votes
up vote
0
down vote
accepted
You messed the commands syntax. The script should look like:
#!/bin/sh -
firstSize=$(du -s /Users/test/Desktop/folder | cut -f1)
until
sleep 3
newSize=$(du -s /Users/test/Desktop/folder | cut -f1)
[ "$firstSize" -eq "$newSize" ]
do
firstSize=$newSize
done
echo 'Done'
add a comment |Â
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
accepted
You messed the commands syntax. The script should look like:
#!/bin/sh -
firstSize=$(du -s /Users/test/Desktop/folder | cut -f1)
until
sleep 3
newSize=$(du -s /Users/test/Desktop/folder | cut -f1)
[ "$firstSize" -eq "$newSize" ]
do
firstSize=$newSize
done
echo 'Done'
add a comment |Â
up vote
0
down vote
accepted
You messed the commands syntax. The script should look like:
#!/bin/sh -
firstSize=$(du -s /Users/test/Desktop/folder | cut -f1)
until
sleep 3
newSize=$(du -s /Users/test/Desktop/folder | cut -f1)
[ "$firstSize" -eq "$newSize" ]
do
firstSize=$newSize
done
echo 'Done'
add a comment |Â
up vote
0
down vote
accepted
up vote
0
down vote
accepted
You messed the commands syntax. The script should look like:
#!/bin/sh -
firstSize=$(du -s /Users/test/Desktop/folder | cut -f1)
until
sleep 3
newSize=$(du -s /Users/test/Desktop/folder | cut -f1)
[ "$firstSize" -eq "$newSize" ]
do
firstSize=$newSize
done
echo 'Done'
You messed the commands syntax. The script should look like:
#!/bin/sh -
firstSize=$(du -s /Users/test/Desktop/folder | cut -f1)
until
sleep 3
newSize=$(du -s /Users/test/Desktop/folder | cut -f1)
[ "$firstSize" -eq "$newSize" ]
do
firstSize=$newSize
done
echo 'Done'
edited Sep 17 at 6:47
Stéphane Chazelas
287k53528867
287k53528867
answered Sep 17 at 5:06
Romeo Ninov
4,48321625
4,48321625
add a comment |Â
add a comment |Â
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
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f469438%2fbash-loop-for-detecting-equal-folder-sizes%23new-answer', 'question_page');
);
Post as a guest
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
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
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
2
See How can I assign the output of a command to a shell variable?
â steeldriver
Sep 16 at 21:35
1
Can't you measure the file size rather than the directory size? Could your sending process send the file with a temporary suffix (eg
.tmp
) and then rename it on successful transfer? (Does OSX haveinotify
? If so that can provide a far more efficient way of determining that a file has landed.)â roaima
Sep 16 at 21:37
Hi @lightwalker. Would you please add more clarifications about what you would like to achieve, so we can help you more efficiently!! How do you transfer your files between folders? do you use
rsync
,scp
, ... ect ? What is the source folder and what is the target folder? Do you want to detect the equality between the source and target folders? let's say that you are usingrsync
to transfer files between folderA
to folderB
, let's say the the folders sizesA=B
what next? what is the purpose of the script?â Goro
Sep 16 at 21:57
Thanks @steeldriver that link helped and it is now working.
â lightwalker
Sep 16 at 22:34
@roaima thanks, the reason for the folder rather than the file is I have do not have control over the file.
â lightwalker
Sep 16 at 22:35