linux 文件移动的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 文件移动的问题相关的知识,希望对你有一定的参考价值。

一个月前下载了些文件放在a目录,今天又下载了些放在b目录(和a同级),但有些文件有复重。
a b 目录 下有若干级子目录和文件,且a,b的子目录有些同名。

现我需将b目录下所有的文件移动到a目录中,必且有重复的则覆盖。

我的操作是
$cd b
$mv * ../a

得到的提示是
mv: cannot move `ftp' to a subdirectory of itself, `../a/ftp'

因为ftp目录在执行命令前在a 和 b目录中都存在。

这个问题应该怎样解决呢?

linux文件移到、复制、删除

    文件移到:可以使用文件移动命令mv,命令格式:mv [-fiv] source destination

    参数说明:
        -f:force,强制直接移动而不询问
        -i:若目标文件(destination)已经存在,就会询问是否覆盖
        -u:若目标文件已经存在,且源文件比较新,才会更新
        如将/test1目录下的file1复制到/test3 目录,并将文件名改为file2,可输入以下命令:
        mv /test1/file1 /test3/file2

    文件复制命令cp

    命令格式:cp [-adfilprsu] 源文件(source) 目标文件(destination)
                  cp [option] source1 source2 source3 ...  directory
        参数说明:
        -a:是指archive的意思,也说是指复制所有的目录
        -d:若源文件为连接文件(link file),则复制连接文件属性而非文件本身
        -f:强制(force),若有重复或其它疑问时,不会询问用户,而强制复制
        -i:若目标文件(destination)已存在,在覆盖时会先询问是否真的操作
        -l:建立硬连接(hard link)的连接文件,而非复制文件本身
        -p:与文件的属性一起复制,而非使用默认属性
        -r:递归复制,用于目录的复制操作
        -s:复制成符号连接文件(symbolic link),即“快捷方式”文件
        -u:若目标文件比源文件旧,更新目标文件
        如将/test1目录下的file1复制到/test3目录,并将文件名改为file2,可输入以下命令:
        cp /test1/file1 /test3/file2

    文件删除命令rm

    命令格式:rm [fir] 文件或目录
        参数说明:
        -f:强制删除
        -i:交互模式,在删除前询问用户是否操作
        -r:递归删除,常用在目录的删除
        如删除/test目录下的file1文件,可以输入以下命令:
        rm -i /test/file1

参考技术A 你要加强制选项啥!~,具体可看一下,帮助文档(man mv)
mv -f * ../a 基本上加了f选项啥都能解决
功能说明:移动或更名现有的文件或目录。

语 法:mv [-bfiuv][--help][--version][-S <附加字尾>][-V <方法>][源文件或目录][目标文件或目录]

补充说明:mv可移动文件或目录,或是更改文件或目录的名称。

参 数:
-b或--backup 若需覆盖文件,则覆盖前先行备份。
-f或--force 若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文 件或目录。
-i或--interactive 覆盖前先行询问用户。
-S<附加字尾>或
--suffix=<附加字尾> 与-b参数一并使用,可指定备份文件的所要附加的字尾。
-u或--update 在移动或更改文件名时,若目标文件已存在,且其文件日期比源文件新,则不覆盖目标文件。
-v或--verbose 执行时显示详细的信息。
-V=<方法>或
--version-control=<方法> 与-b参数一并使用,可指定备份的方法。
--help 显示帮助。
--version 显示版本信息。本回答被提问者采纳
参考技术B 你可以试下 mv -i * ../a
参数:-i 若目的地已有同名档案,则先询问是否覆盖旧档。

关于linux下移动文件的问题

系统的整体框架如下:
一个服务A负责接收前端设备上传的数据,然后处理成xml文件。通过ftp自动上传到另外一个服务上去。
一个服务B负责接收前一个服务上传上来的xml,解析、入库、移动xml文件到正式目录下。
环境:linux、服务器外接了一个存储设备。
现在出现的问题是,A能上传、B能解析、入库。但是移动xml文件的时候,会是不是的出现文件移动不走的问题。
针对于此,我特地写了一个文件监控服务,每个10分钟扫描一下B服务的临时文件夹,发现有残留文件的话,自动的将之写入到正式目录下,完成此操作后,再删除掉源文件。
但是今天出现了一个问题,日志提示文件已经移走了,源文件也被删除了,但是正式目录下却没有文件。我用的是FileInputStream和FileOutputStream来读源文件和写目标文件,按理说几天提示已经移走了,就说明FileOutputStream没有报错,文件写入成功了,要不然日志里肯定会报错的。
不知道这种情况各位高人是否也碰到过?求解。

在移动文件之前增加一个独立的写文件操作,每次写一个递增的数,看一下是否执行成功,首先要定位不是移动文件的问题;接着,确定是否写日志文件有问题,比如日志文件没有关闭,写缓存出错等等。 参考技术A 可以试试小规模数据的测试,定位问题的所在。追问

现在这个问题很奇怪,大部分时间都是正常的。只是偶尔会出现文件移动不走。但是日志里又提示移动成功了,不报错...

追答

说明问题出在,【打印日志语句的代码】前面的代码里~

参考技术B 学习中……打扰!

以上是关于linux 文件移动的问题的主要内容,如果未能解决你的问题,请参考以下文章

LINUX 移动文件命令

Linux如何移动文件夹(Linux如何移动文件)

Linux移动文件

linux中如何移动文件

如何使用 C++ 在 Linux 中移动文件

linux下如何移动文件到一个不存在的目录