我正在尝试编写代码以将文件导入HDFS以用作配置单元外部表.我发现使用类似的东西:
foo | ssh hostname"hdfs dfs -put - /destination/$ FILENAME"
可能会导致创建临时文件时出现一种错误,然后在完成时重命名.这可能导致目录列表和查询执行之间的配置单元的竞争条件.
一种解决方法是将文件复制到临时目录并将"hdfs dfs mv"复制到位.
具体和一般/学术问题是:
我有一个看起来像这样的目录
fool@brat:/mydir/ucsc_mm8> tar -xvf *.tar
1/chr1.fa.masked
1/chr1_random.fa.masked
2/chr2.fa.masked
3/chr3.fa.masked
4/chr4.fa.masked
5/chr5.fa.masked
5/chr5_random.fa.masked
19/chr19.fa.masked
Un/chrUn_random.fa.masked
Run Code Online (Sandbox Code Playgroud)
我想要做的是在子目录搬出所有的"*.masked"文件/1
高达/Un
.在Linux/Unix中有一种简洁的方法吗?
我经常发现自己使用mv重命名文件.例如
mv app/models/keywords_builder.rb app/models/keywords_generator.rb
Run Code Online (Sandbox Code Playgroud)
这样做我需要写第二个参数的路径(确定,标签完成).在这个例子中它不是太糟糕,但有时路径是深度嵌套的,它似乎是相当多的额外打字.
有没有更有效的方法来做到这一点?
我正在尝试运行命令
mv /var/www/my_folder/reports.html /tmp/
Run Code Online (Sandbox Code Playgroud)
它运行正常。但是我想设置一个条件,例如该文件是否存在,然后只运行该命令。有这样的吗?
我可以放一个shell文件。对于外壳,尝试过下面的事情
if [ -e /var/www/my_folder/reports.html ]
then
mv /var/www/my_folder/reports.html /tmp/
fi
Run Code Online (Sandbox Code Playgroud)
但我需要一个命令。有人可以帮我弄这个吗?
这应该是相对微不足道的,但我已经尝试了一段时间没有太多运气.我有一个目录,里面有很多目录,每个目录都有自己的结构和文件.
我希望在工作目录下的任何目录中找到所有.java文件,并将它们重命名为特定名称.例如,我想将所有java文件命名为"test.java".
如果目录结构是:
./files/abc/src/abc.java
./files/eee/src/foo.java
./files/roo/src/jam.java
Run Code Online (Sandbox Code Playgroud)
我想简单地重命名为:
./files/abc/src/test.java
./files/eee/src/test.java
./files/roo/src/test.java
Run Code Online (Sandbox Code Playgroud)
当然,我的部分问题是路径可能有空格.我不需要担心重命名文件中的类或任何内容,只需要文件名.
如果目录中有超过1个.java文件,我不介意它是否被覆盖或者是否给出了选择要做的提示(要么是好的,每个目录中不可能有超过1个.
我尝试过的:
看着mv并找到,但是当我把它们管在一起时,我似乎做错了,我想确保将它们保留在当前位置并重命名,而不是移动.
谢谢,我真的很感激任何帮助.
我有以下格式的以下文件:
$ ls CombinedReports_LLL-*'('*.csv
CombinedReports_LLL-20140211144020(Untitled_1).csv
CombinedReports_LLL-20140211144020(Untitled_11).csv
CombinedReports_LLL-20140211144020(Untitled_110).csv
CombinedReports_LLL-20140211144020(Untitled_111).csv
CombinedReports_LLL-20140211144020(Untitled_12).csv
CombinedReports_LLL-20140211144020(Untitled_13).csv
CombinedReports_LLL-20140211144020(Untitled_14).csv
CombinedReports_LLL-20140211144020(Untitled_15).csv
CombinedReports_LLL-20140211144020(Untitled_16).csv
CombinedReports_LLL-20140211144020(Untitled_17).csv
CombinedReports_LLL-20140211144020(Untitled_18).csv
CombinedReports_LLL-20140211144020(Untitled_19).csv
Run Code Online (Sandbox Code Playgroud)
我希望删除此部分:(
20140211144020
这是报告运行的时间戳,因此会有所不同)
并最终得到类似的东西:
CombinedReports_LLL-(Untitled_1).csv
CombinedReports_LLL-(Untitled_11).csv
CombinedReports_LLL-(Untitled_110).csv
CombinedReports_LLL-(Untitled_111).csv
CombinedReports_LLL-(Untitled_12).csv
CombinedReports_LLL-(Untitled_13).csv
CombinedReports_LLL-(Untitled_14).csv
CombinedReports_LLL-(Untitled_15).csv
CombinedReports_LLL-(Untitled_16).csv
CombinedReports_LLL-(Untitled_17).csv
CombinedReports_LLL-(Untitled_18).csv
CombinedReports_LLL-(Untitled_19).csv
Run Code Online (Sandbox Code Playgroud)
我只是按照mv命令的思路思考,可能是这样的:
$ ls CombinedReports_LLL-*'('*.csv
Run Code Online (Sandbox Code Playgroud)
但也许一个sed命令或其他更好
我在/ home/somedir/subdir /中有很多文件,我试图以编程方式将它们全部移动到/ home/somedir.
现在我有这个:
subprocess.call(["mv", "/home/somedir/subdir/*", "somedir/"])
Run Code Online (Sandbox Code Playgroud)
但它给了我这个错误:
mv: cannot stat `/home/somedir/subdir/*': No such file or directory
Run Code Online (Sandbox Code Playgroud)
我知道它确实存在,因为当我使用与脚本使用的完全相同的命令手动键入mv命令时,它可以完美地工作.
有一种简单的方法可以将目录中的所有文件移动到其父目录,然后删除目录吗?
我正在进行拉链提取,源zip包含一个名为的根文件夹archive
,所以当我提取时我得到了extract_path/archive/
,但我想archive
直接将内容提取到extract_path
.
我认为这将是简单的重命名,但以下是抛出"有一个文件的方式"错误消息.
fs.renameSync(extractPath + "/archive", extractPath)
Run Code Online (Sandbox Code Playgroud) 我有几个文件夹,每个文件夹有15,000到40,000张照片.我希望将每个文件拆分为子文件夹 - 每个文件夹中包含2,000个文件.
有什么快速的方法可以创建我需要的每个文件夹并移动所有文件?
目前我只能找到如何将文件夹中的前x个项目移动到预先存在的目录中.为了在包含20,000个项目的文件夹上使用它...我需要手动创建10个文件夹,并运行命令10次.
ls -1 | sort -n | head -2000| xargs -i mv "{}" /folder/
Run Code Online (Sandbox Code Playgroud)
我尝试将它放入for循环中,但是在使用mkdir正确制作文件夹时遇到了麻烦.即使我解决了这个问题,我还是需要程序只为每个第20个文件创建文件夹(新组的开始).它想为每个文件创建一个新文件夹.
那么......我怎样才能轻松地将大量文件移动到每个文件中任意数量文件的文件夹中?
任何帮助都会......非常......乐于助人!
我最近尝试将我的个人博客网站部署到我的远程服务器。当我尝试通过执行将一些文件和目录移动到另一个地方时mv
,发生了一些意外错误。命令行回显“目录不为空”。在进行了一些谷歌搜索后,我再次尝试使用 ' -f ' 开关或 ' -v ',显示相同的结果。我是用root账号登录的,流程在这里:
root@danielpan:~# shopt -s dotglob
root@danielpan:~# mv /var/www/html/wordpress/* /var/www/html
mv: cannot move `/var/www/html/wordpress/wp-content` to `/var/www/html/wp-content`:
Directory not empty
root@danielpan:~# mv -f /var/www/html/wordpress/* /var/www/html
mv: cannot move `/var/www/html/wordpress/wp-content` to `/var/www/html/wp-content`:
Directory not empty
Run Code Online (Sandbox Code Playgroud)
有人知道为什么吗?
(我正在运行 Ubuntu 14.04)