为什么cp在一台服务器上显示"is not a directory",在另一台服务器上就没问题
Why cp indicate "is not a directory" on one server and it's okay on another server
当我在我的服务器上执行这个命令时:
cp *index.html saveIndex/$(date +%Y%m%d-%H%M)Index.html
shell表示:
cp: target 'saveIndex/20180110-0934Index.html' is not a directory
但是,这个命令在我的电脑上起作用。
因为您有多个 *index
文件,您的命令如下所示:
cp index.html 1index.html bla-blaindex.html saveIndex/20180110-0934Index.html
如果最后一个参数是目录而不是文件名,则可以执行。
您可以或 运行 cp *index.html saveIndex/
,或在 date
处添加秒数作为新文件名并创建这样的脚本:
#!/bin/bash
for ifile in *index.html
do
cp "${ifile}" saveIndex/$(date +%Y%m%d-%H%M%S)Index.html
sleep 1
done
sleep 1
将允许您获得唯一的名称,但您可以使用您喜欢的任何其他后缀(例如 $RANDOM
或上次 modified/changed 日期,每个文件的索引节点)避免sleep 1
等待。
索引节点示例:
#!/bin/bash
for ifile in *index.html
do
cp "${ifile}" saveIndex/$(stat -c %i "${ifile}")-$(date +%Y%m%d-%H%M%S)Index.html
done
当我在我的服务器上执行这个命令时:
cp *index.html saveIndex/$(date +%Y%m%d-%H%M)Index.html
shell表示:
cp: target 'saveIndex/20180110-0934Index.html' is not a directory
但是,这个命令在我的电脑上起作用。
因为您有多个 *index
文件,您的命令如下所示:
cp index.html 1index.html bla-blaindex.html saveIndex/20180110-0934Index.html
如果最后一个参数是目录而不是文件名,则可以执行。
您可以或 运行 cp *index.html saveIndex/
,或在 date
处添加秒数作为新文件名并创建这样的脚本:
#!/bin/bash
for ifile in *index.html
do
cp "${ifile}" saveIndex/$(date +%Y%m%d-%H%M%S)Index.html
sleep 1
done
sleep 1
将允许您获得唯一的名称,但您可以使用您喜欢的任何其他后缀(例如 $RANDOM
或上次 modified/changed 日期,每个文件的索引节点)避免sleep 1
等待。
索引节点示例:
#!/bin/bash
for ifile in *index.html
do
cp "${ifile}" saveIndex/$(stat -c %i "${ifile}")-$(date +%Y%m%d-%H%M%S)Index.html
done