mv: 'path1/path2/filename1' and '/home/user1/dir1/path1/path2/filename1' are the same file
Clash Royale CLAN TAG#URR8PPP
After using command:
find path1/ -iname 'file*[1234]' -exec mv -t /home/user1/dir1/path1/path2 ;
I got an error that those files are the same. The command finished successfully. The parent directory from where the search started is path1/
and then as destination directory I put whole absolut path where I want the files moved. Why did this happen?
linux find command mv
add a comment |
After using command:
find path1/ -iname 'file*[1234]' -exec mv -t /home/user1/dir1/path1/path2 ;
I got an error that those files are the same. The command finished successfully. The parent directory from where the search started is path1/
and then as destination directory I put whole absolut path where I want the files moved. Why did this happen?
linux find command mv
add a comment |
After using command:
find path1/ -iname 'file*[1234]' -exec mv -t /home/user1/dir1/path1/path2 ;
I got an error that those files are the same. The command finished successfully. The parent directory from where the search started is path1/
and then as destination directory I put whole absolut path where I want the files moved. Why did this happen?
linux find command mv
After using command:
find path1/ -iname 'file*[1234]' -exec mv -t /home/user1/dir1/path1/path2 ;
I got an error that those files are the same. The command finished successfully. The parent directory from where the search started is path1/
and then as destination directory I put whole absolut path where I want the files moved. Why did this happen?
linux find command mv
linux find command mv
edited Jan 24 at 21:42
Stefan Hamcke
217312
217312
asked Jan 24 at 20:45
Miloš StojanovićMiloš Stojanović
155
155
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
What mv
is saying is that it makes no sense to move the particular file as moving it to the destination would write it back to itself.
You'll get the same thing if you try
mv file file
for any file called file
.
As to why this happens:
You run find
on the path path1
. I'm assuming that this is the same path1
as in the absolute path /home/user1/dir1/path1/path2
.
If you have files in /home/user1/dir1/path1/path2
whose names matches the pattern that you use (these may have been moved there by an earlier invocation of your find
command, or even by the same find
due to the order of directory traversals that find
makes), then these would be found by find
(since path2
is a subdirectory of path1
). This would prompt find
to try to execute an mv
command that would move files from path2
into path2
. This is what triggers the message (I'm hesitating to call it an actual "error").
To avoid looking into path2
with find
, you may do this:
find path1 ( -type d -path 'path1/path2' -prune ) -o -iname 'file*[1234]' -exec mv -t /home/user1/dir1/path1/path2 +
If the thing found is a directory (-type d
) and if it's the pathname path1/path2
, then prune it from the directory search tree that find
builds while traversing the directories. Otherwise, continue as before (almost, I changed the final ;
to +
to make mv
take as many pathnames as possible at once).
I think the problem here is that there is a file matching the pattern in.../path2/
because another such file was moved to that target directory during the find command and the target directory is traversed after the directory the file originated from. If you haveAfolder/file
but noBfolder/file
and you dofind -name file -exec mv -t Bfolder ;
, you get the error, but if you have aBfolder/file
and noAfolder/file
, then you don't.
– Stefan Hamcke
Jan 24 at 21:22
@StefanHamcke The error indicates that you are moving a file to itself. Not just that you are moving a file to another with the same name. The actual inode is the same when this message is outputted. Also, I think you got your two examples mixed up.
– Kusalananda
Jan 24 at 21:36
I know. I'm referring to your sentence "If you have files in/home/user1/dir1/path1/path2
...". I think the OP did not originally have such files in the target dir, but they were moved there due to the command. Let me explain my example: Say you are in a dir with onlyAfolder/
andBfolder/
and alsoAfolder/file
(regular file), but nothing else. Then you do not even need aBfolder/file
for the message to appear when you executefind -name file -exec mv -t Bfolder ;
.
– Stefan Hamcke
Jan 24 at 21:52
@StefanHamcke Ah, yes. It may depend on the order of traversal as well. If the destination directory is late in that order, files may already have started to accumulate there.
– Kusalananda
Jan 24 at 21:55
The above command will first descent intoAfolder/
, find thefile
, and move it toBfolder/
. After that, it will look intoBfolder/
and stumble upon the file it did just move there.
– Stefan Hamcke
Jan 24 at 21:56
|
show 2 more comments
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%2f496547%2fmv-path1-path2-filename1-and-home-user1-dir1-path1-path2-filename1-are-the%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
What mv
is saying is that it makes no sense to move the particular file as moving it to the destination would write it back to itself.
You'll get the same thing if you try
mv file file
for any file called file
.
As to why this happens:
You run find
on the path path1
. I'm assuming that this is the same path1
as in the absolute path /home/user1/dir1/path1/path2
.
If you have files in /home/user1/dir1/path1/path2
whose names matches the pattern that you use (these may have been moved there by an earlier invocation of your find
command, or even by the same find
due to the order of directory traversals that find
makes), then these would be found by find
(since path2
is a subdirectory of path1
). This would prompt find
to try to execute an mv
command that would move files from path2
into path2
. This is what triggers the message (I'm hesitating to call it an actual "error").
To avoid looking into path2
with find
, you may do this:
find path1 ( -type d -path 'path1/path2' -prune ) -o -iname 'file*[1234]' -exec mv -t /home/user1/dir1/path1/path2 +
If the thing found is a directory (-type d
) and if it's the pathname path1/path2
, then prune it from the directory search tree that find
builds while traversing the directories. Otherwise, continue as before (almost, I changed the final ;
to +
to make mv
take as many pathnames as possible at once).
I think the problem here is that there is a file matching the pattern in.../path2/
because another such file was moved to that target directory during the find command and the target directory is traversed after the directory the file originated from. If you haveAfolder/file
but noBfolder/file
and you dofind -name file -exec mv -t Bfolder ;
, you get the error, but if you have aBfolder/file
and noAfolder/file
, then you don't.
– Stefan Hamcke
Jan 24 at 21:22
@StefanHamcke The error indicates that you are moving a file to itself. Not just that you are moving a file to another with the same name. The actual inode is the same when this message is outputted. Also, I think you got your two examples mixed up.
– Kusalananda
Jan 24 at 21:36
I know. I'm referring to your sentence "If you have files in/home/user1/dir1/path1/path2
...". I think the OP did not originally have such files in the target dir, but they were moved there due to the command. Let me explain my example: Say you are in a dir with onlyAfolder/
andBfolder/
and alsoAfolder/file
(regular file), but nothing else. Then you do not even need aBfolder/file
for the message to appear when you executefind -name file -exec mv -t Bfolder ;
.
– Stefan Hamcke
Jan 24 at 21:52
@StefanHamcke Ah, yes. It may depend on the order of traversal as well. If the destination directory is late in that order, files may already have started to accumulate there.
– Kusalananda
Jan 24 at 21:55
The above command will first descent intoAfolder/
, find thefile
, and move it toBfolder/
. After that, it will look intoBfolder/
and stumble upon the file it did just move there.
– Stefan Hamcke
Jan 24 at 21:56
|
show 2 more comments
What mv
is saying is that it makes no sense to move the particular file as moving it to the destination would write it back to itself.
You'll get the same thing if you try
mv file file
for any file called file
.
As to why this happens:
You run find
on the path path1
. I'm assuming that this is the same path1
as in the absolute path /home/user1/dir1/path1/path2
.
If you have files in /home/user1/dir1/path1/path2
whose names matches the pattern that you use (these may have been moved there by an earlier invocation of your find
command, or even by the same find
due to the order of directory traversals that find
makes), then these would be found by find
(since path2
is a subdirectory of path1
). This would prompt find
to try to execute an mv
command that would move files from path2
into path2
. This is what triggers the message (I'm hesitating to call it an actual "error").
To avoid looking into path2
with find
, you may do this:
find path1 ( -type d -path 'path1/path2' -prune ) -o -iname 'file*[1234]' -exec mv -t /home/user1/dir1/path1/path2 +
If the thing found is a directory (-type d
) and if it's the pathname path1/path2
, then prune it from the directory search tree that find
builds while traversing the directories. Otherwise, continue as before (almost, I changed the final ;
to +
to make mv
take as many pathnames as possible at once).
I think the problem here is that there is a file matching the pattern in.../path2/
because another such file was moved to that target directory during the find command and the target directory is traversed after the directory the file originated from. If you haveAfolder/file
but noBfolder/file
and you dofind -name file -exec mv -t Bfolder ;
, you get the error, but if you have aBfolder/file
and noAfolder/file
, then you don't.
– Stefan Hamcke
Jan 24 at 21:22
@StefanHamcke The error indicates that you are moving a file to itself. Not just that you are moving a file to another with the same name. The actual inode is the same when this message is outputted. Also, I think you got your two examples mixed up.
– Kusalananda
Jan 24 at 21:36
I know. I'm referring to your sentence "If you have files in/home/user1/dir1/path1/path2
...". I think the OP did not originally have such files in the target dir, but they were moved there due to the command. Let me explain my example: Say you are in a dir with onlyAfolder/
andBfolder/
and alsoAfolder/file
(regular file), but nothing else. Then you do not even need aBfolder/file
for the message to appear when you executefind -name file -exec mv -t Bfolder ;
.
– Stefan Hamcke
Jan 24 at 21:52
@StefanHamcke Ah, yes. It may depend on the order of traversal as well. If the destination directory is late in that order, files may already have started to accumulate there.
– Kusalananda
Jan 24 at 21:55
The above command will first descent intoAfolder/
, find thefile
, and move it toBfolder/
. After that, it will look intoBfolder/
and stumble upon the file it did just move there.
– Stefan Hamcke
Jan 24 at 21:56
|
show 2 more comments
What mv
is saying is that it makes no sense to move the particular file as moving it to the destination would write it back to itself.
You'll get the same thing if you try
mv file file
for any file called file
.
As to why this happens:
You run find
on the path path1
. I'm assuming that this is the same path1
as in the absolute path /home/user1/dir1/path1/path2
.
If you have files in /home/user1/dir1/path1/path2
whose names matches the pattern that you use (these may have been moved there by an earlier invocation of your find
command, or even by the same find
due to the order of directory traversals that find
makes), then these would be found by find
(since path2
is a subdirectory of path1
). This would prompt find
to try to execute an mv
command that would move files from path2
into path2
. This is what triggers the message (I'm hesitating to call it an actual "error").
To avoid looking into path2
with find
, you may do this:
find path1 ( -type d -path 'path1/path2' -prune ) -o -iname 'file*[1234]' -exec mv -t /home/user1/dir1/path1/path2 +
If the thing found is a directory (-type d
) and if it's the pathname path1/path2
, then prune it from the directory search tree that find
builds while traversing the directories. Otherwise, continue as before (almost, I changed the final ;
to +
to make mv
take as many pathnames as possible at once).
What mv
is saying is that it makes no sense to move the particular file as moving it to the destination would write it back to itself.
You'll get the same thing if you try
mv file file
for any file called file
.
As to why this happens:
You run find
on the path path1
. I'm assuming that this is the same path1
as in the absolute path /home/user1/dir1/path1/path2
.
If you have files in /home/user1/dir1/path1/path2
whose names matches the pattern that you use (these may have been moved there by an earlier invocation of your find
command, or even by the same find
due to the order of directory traversals that find
makes), then these would be found by find
(since path2
is a subdirectory of path1
). This would prompt find
to try to execute an mv
command that would move files from path2
into path2
. This is what triggers the message (I'm hesitating to call it an actual "error").
To avoid looking into path2
with find
, you may do this:
find path1 ( -type d -path 'path1/path2' -prune ) -o -iname 'file*[1234]' -exec mv -t /home/user1/dir1/path1/path2 +
If the thing found is a directory (-type d
) and if it's the pathname path1/path2
, then prune it from the directory search tree that find
builds while traversing the directories. Otherwise, continue as before (almost, I changed the final ;
to +
to make mv
take as many pathnames as possible at once).
edited Jan 24 at 21:56
answered Jan 24 at 20:57
KusalanandaKusalananda
129k16245404
129k16245404
I think the problem here is that there is a file matching the pattern in.../path2/
because another such file was moved to that target directory during the find command and the target directory is traversed after the directory the file originated from. If you haveAfolder/file
but noBfolder/file
and you dofind -name file -exec mv -t Bfolder ;
, you get the error, but if you have aBfolder/file
and noAfolder/file
, then you don't.
– Stefan Hamcke
Jan 24 at 21:22
@StefanHamcke The error indicates that you are moving a file to itself. Not just that you are moving a file to another with the same name. The actual inode is the same when this message is outputted. Also, I think you got your two examples mixed up.
– Kusalananda
Jan 24 at 21:36
I know. I'm referring to your sentence "If you have files in/home/user1/dir1/path1/path2
...". I think the OP did not originally have such files in the target dir, but they were moved there due to the command. Let me explain my example: Say you are in a dir with onlyAfolder/
andBfolder/
and alsoAfolder/file
(regular file), but nothing else. Then you do not even need aBfolder/file
for the message to appear when you executefind -name file -exec mv -t Bfolder ;
.
– Stefan Hamcke
Jan 24 at 21:52
@StefanHamcke Ah, yes. It may depend on the order of traversal as well. If the destination directory is late in that order, files may already have started to accumulate there.
– Kusalananda
Jan 24 at 21:55
The above command will first descent intoAfolder/
, find thefile
, and move it toBfolder/
. After that, it will look intoBfolder/
and stumble upon the file it did just move there.
– Stefan Hamcke
Jan 24 at 21:56
|
show 2 more comments
I think the problem here is that there is a file matching the pattern in.../path2/
because another such file was moved to that target directory during the find command and the target directory is traversed after the directory the file originated from. If you haveAfolder/file
but noBfolder/file
and you dofind -name file -exec mv -t Bfolder ;
, you get the error, but if you have aBfolder/file
and noAfolder/file
, then you don't.
– Stefan Hamcke
Jan 24 at 21:22
@StefanHamcke The error indicates that you are moving a file to itself. Not just that you are moving a file to another with the same name. The actual inode is the same when this message is outputted. Also, I think you got your two examples mixed up.
– Kusalananda
Jan 24 at 21:36
I know. I'm referring to your sentence "If you have files in/home/user1/dir1/path1/path2
...". I think the OP did not originally have such files in the target dir, but they were moved there due to the command. Let me explain my example: Say you are in a dir with onlyAfolder/
andBfolder/
and alsoAfolder/file
(regular file), but nothing else. Then you do not even need aBfolder/file
for the message to appear when you executefind -name file -exec mv -t Bfolder ;
.
– Stefan Hamcke
Jan 24 at 21:52
@StefanHamcke Ah, yes. It may depend on the order of traversal as well. If the destination directory is late in that order, files may already have started to accumulate there.
– Kusalananda
Jan 24 at 21:55
The above command will first descent intoAfolder/
, find thefile
, and move it toBfolder/
. After that, it will look intoBfolder/
and stumble upon the file it did just move there.
– Stefan Hamcke
Jan 24 at 21:56
I think the problem here is that there is a file matching the pattern in
.../path2/
because another such file was moved to that target directory during the find command and the target directory is traversed after the directory the file originated from. If you have Afolder/file
but no Bfolder/file
and you do find -name file -exec mv -t Bfolder ;
, you get the error, but if you have a Bfolder/file
and no Afolder/file
, then you don't.– Stefan Hamcke
Jan 24 at 21:22
I think the problem here is that there is a file matching the pattern in
.../path2/
because another such file was moved to that target directory during the find command and the target directory is traversed after the directory the file originated from. If you have Afolder/file
but no Bfolder/file
and you do find -name file -exec mv -t Bfolder ;
, you get the error, but if you have a Bfolder/file
and no Afolder/file
, then you don't.– Stefan Hamcke
Jan 24 at 21:22
@StefanHamcke The error indicates that you are moving a file to itself. Not just that you are moving a file to another with the same name. The actual inode is the same when this message is outputted. Also, I think you got your two examples mixed up.
– Kusalananda
Jan 24 at 21:36
@StefanHamcke The error indicates that you are moving a file to itself. Not just that you are moving a file to another with the same name. The actual inode is the same when this message is outputted. Also, I think you got your two examples mixed up.
– Kusalananda
Jan 24 at 21:36
I know. I'm referring to your sentence "If you have files in
/home/user1/dir1/path1/path2
...". I think the OP did not originally have such files in the target dir, but they were moved there due to the command. Let me explain my example: Say you are in a dir with only Afolder/
and Bfolder/
and also Afolder/file
(regular file), but nothing else. Then you do not even need a Bfolder/file
for the message to appear when you execute find -name file -exec mv -t Bfolder ;
.– Stefan Hamcke
Jan 24 at 21:52
I know. I'm referring to your sentence "If you have files in
/home/user1/dir1/path1/path2
...". I think the OP did not originally have such files in the target dir, but they were moved there due to the command. Let me explain my example: Say you are in a dir with only Afolder/
and Bfolder/
and also Afolder/file
(regular file), but nothing else. Then you do not even need a Bfolder/file
for the message to appear when you execute find -name file -exec mv -t Bfolder ;
.– Stefan Hamcke
Jan 24 at 21:52
@StefanHamcke Ah, yes. It may depend on the order of traversal as well. If the destination directory is late in that order, files may already have started to accumulate there.
– Kusalananda
Jan 24 at 21:55
@StefanHamcke Ah, yes. It may depend on the order of traversal as well. If the destination directory is late in that order, files may already have started to accumulate there.
– Kusalananda
Jan 24 at 21:55
The above command will first descent into
Afolder/
, find the file
, and move it to Bfolder/
. After that, it will look into Bfolder/
and stumble upon the file it did just move there.– Stefan Hamcke
Jan 24 at 21:56
The above command will first descent into
Afolder/
, find the file
, and move it to Bfolder/
. After that, it will look into Bfolder/
and stumble upon the file it did just move there.– Stefan Hamcke
Jan 24 at 21:56
|
show 2 more comments
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%2f496547%2fmv-path1-path2-filename1-and-home-user1-dir1-path1-path2-filename1-are-the%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