使用xargs时如何解决no such file or directory的问题
How to solve no such file or directory while using xargs
我正在尝试将文件复制到同一目录但带有前缀。我正在使用 xargs 来做到这一点。注意:我不能使用 cd
,因为它会破坏我管道中的构建。
这就是我的
root@gotoadmins-OU:~# ls
snap test
root@gotoadmins-OU:~# ls test/
me.war
root@gotoadmins-OU:~# ls test | xargs -I {} cp {} latest-{} test/
cp: cannot stat 'me.war': No such file or directory
cp: cannot stat 'latest-me.war': No such file or directory
你可以只使用 cp 命令来做这个吗?
cp test/me.war test/latest-me.war
如果我理解正确的话,你只是想将一个子目录中的所有文件复制到同一个子目录,但前缀为“latest-”。
find test -type f -execdir bash -c 'cp "" latest-"$(basename "")"' "$(which bash)" "{}" \;
$(which bash)
可以用 bash
或任何其他词代替,真的。这只是一个占位符。
正如@KamilCuk 评论的那样,子外壳也可能是一个选项。如果您将命令放在括号内(例如 (cd test; for FILE in *; do cp "$FILE" latest-"$FILE"; done)
),这些命令在子 shell 中是 运行,因此环境(包括您的工作目录)不受影响。
我正在尝试将文件复制到同一目录但带有前缀。我正在使用 xargs 来做到这一点。注意:我不能使用 cd
,因为它会破坏我管道中的构建。
这就是我的
root@gotoadmins-OU:~# ls
snap test
root@gotoadmins-OU:~# ls test/
me.war
root@gotoadmins-OU:~# ls test | xargs -I {} cp {} latest-{} test/
cp: cannot stat 'me.war': No such file or directory
cp: cannot stat 'latest-me.war': No such file or directory
你可以只使用 cp 命令来做这个吗?
cp test/me.war test/latest-me.war
如果我理解正确的话,你只是想将一个子目录中的所有文件复制到同一个子目录,但前缀为“latest-”。
find test -type f -execdir bash -c 'cp "" latest-"$(basename "")"' "$(which bash)" "{}" \;
$(which bash)
可以用 bash
或任何其他词代替,真的。这只是一个占位符。
正如@KamilCuk 评论的那样,子外壳也可能是一个选项。如果您将命令放在括号内(例如 (cd test; for FILE in *; do cp "$FILE" latest-"$FILE"; done)
),这些命令在子 shell 中是 运行,因此环境(包括您的工作目录)不受影响。