我需要一个 Linux 命令来复制一个名称与特定模式匹配的文件。
例如:
我有一个文件builds/myApp_v_4.1.apk,我想将其复制到artifacts/myApp_v_4.1.apk
然而它可以是myApp_v_4.2.apk或myApp_v_4.3.apk...
所以我正在寻找一种方法来复制以“myApp_v_”开头并以“.apk”结尾的文件
使用cp命令可以做到这一点吗?
非常感谢
我想复制一堆 Verilog/systemverilog 源,所以我使用 CP 和通配符表达式:
cp <some_dir>/*.{v,sv,svh} .
Run Code Online (Sandbox Code Playgroud)
有用。但是当我把它放到一个完全相同行的脚本中时,CP 命令失败并显示日志:
cp: cannot stat `../../mytest/spiTest/*.{v,sv,svh}': No such file or directory
Run Code Online (Sandbox Code Playgroud)
这是怎么回事?
PS:我使用 bash 作为外壳。
这是我的脚本:
#!/bin/bash
rdir=../../mytest/spiTest
f1="$rdir/bench.lst"
f2="$rdir/cphex" #the script to copy rom data
f3="$rdir/make*" #makefile scripts
f4="$rdir/*.hex" #rom files
f5="$rdir/*.{v,sv,svh}" #testbench files
echo 'Copying files...'
cp $f1 $f2 $f3 $f4 .
cp $f5 .
Run Code Online (Sandbox Code Playgroud)
我确实将第一行更改为
#!/bin/bash -vx
Run Code Online (Sandbox Code Playgroud)
并再次运行此脚本,我得到:
#!/bin/bash -vx
rdir=../../mytest/spiTest
+ rdir=../../mytest/spiTest
f1="$rdir/bench.lst"
+ f1=../../mytest/spiTest/bench.lst
f2="$rdir/cphex" #the script to copy rom data
+ f2=../../mytest/spiTest/cphex
f3="$rdir/make*" #makefile scripts
+ …Run Code Online (Sandbox Code Playgroud) 我有这个目录结构:
% ls /tmp/source_dir/
aa-aa/ bb-bb/ cc-cc/ morejunk/ somejunk/
% ls /tmp/dest_dir
aa-aa/ bb-bb/ blah/ blahblah/
Run Code Online (Sandbox Code Playgroud)
对于 dest_dir 中匹配 ??-?? 的每个目录,我想从 source_dir 复制相应的文件“goodfile”。我已尝试以下方法但无济于事:
% cd /tmp/dest_dir
/tmp/dest_dir% \ls -d ??-?? | xargs cp /tmp/source_dir/{}/goodfile {}
cp: cannot stat `/tmp/source_dir/{}/goodfile': No such file or directory
cp: cannot stat `{}': No such file or directory
cp: omitting directory `aa-aa'
/tmp/dest_dir% \ls -d ??-?? | xargs bash -c "cp /tmp/source_dir/{$0}/goodfile {$0}"
cp: cannot stat `/tmp/source_dir/{/bin/bash}/goodfile': No such file or directory
Run Code Online (Sandbox Code Playgroud)
当然有一种方法可以做到这一点而无需编写单独的脚本吗?
我正在尝试将文件从一个文件夹复制到另一个文件夹。我收到一条错误消息,指出目标文件夹是只读文件系统。我最初认为更改文件权限可以缓解该问题,但事实并非如此。如何将文件从一个文件夹复制到另一个文件夹?这是我使用的命令:
cp sourceFolder/someFile.txt /destFolder
Run Code Online (Sandbox Code Playgroud)
错误信息:
cp: /destFolder: Read-only file system
Run Code Online (Sandbox Code Playgroud) 我想要做的是从索引文件中读取文件名列表,然后将每个列出的文件复制到另一个目录,但我在正确地将 xargs 和 cp 串在一起时遇到了一些麻烦。
head -n 150 ../indexes/index.txt | xargs cp ~/path/to/destination/
Run Code Online (Sandbox Code Playgroud)
这会产生以下错误:
cp: target 'foo.txt': Not a directory
Run Code Online (Sandbox Code Playgroud)
其中foo.txt是 index.txt 中列出的第 150 个文件名。显然 cp 应该将 xargs 的输入作为其第一个操作数而不是第二个操作数,但我如何让它做到这一点?
# cat /tmp/foo - 常规文件
/lib/a.lib
/lib/b.lib
/lib/c.lib
/lib/d.lib
Run Code Online (Sandbox Code Playgroud)
cat /tmp/foo | xargs cp /tmp/fred
cp:target /lib/d.lib不是目录
在脚本中,我有声明
eval cp "$chapter"/subsections/* $temp/subsections
Run Code Online (Sandbox Code Playgroud)
但是,我不确定"$ chapter"/ subsections /中是否存在实际文件.结果我得到错误:
cp: cannot stat `Commissioning/subsections/*': No such file or directory
Run Code Online (Sandbox Code Playgroud)
cp中是否有选项可以避免投诉(我找不到任何投诉)?
有没有一种简单的方法来检查目录中是否存在任何文件?
我正在尝试使用子进程库和Popen方法将文件从一个位置复制到另一个位置.运行以下脚本时,我收到错误cp: cannot stat /some/dev_path/*.我被告知*没有扩展到文件名,这就是问题所在.另外在其他一些帖子中,人们建议使用呼叫代替Popen,但据我所知,呼叫不会返回stderr.
devPath = '/some/dev_path/'
productionPath = '/some/prod_path/'
p = subprocess.Popen(['cp', '-r', devPath + '*', productionPath], stdout = subprocess.PIPE, stderr = subprocess.PIPE)
pout, perr = p.communicate()
if perr != '':
sys.exit('Error: ' + perr)
Run Code Online (Sandbox Code Playgroud) 我想用它xargs -a来读取文件中包含文件名列表的内容.
我的目录工作方式如下:
backups
file1.bak
file2.bak
file3.bak
bakfiles.txt
Run Code Online (Sandbox Code Playgroud)
文件名中包含文件名: bakfiles.txt
bakfiles.txt内容:
file1.bak
file2.bak
file3.bak
Run Code Online (Sandbox Code Playgroud)
所以基本上我正试图复制file1.bak,file2.bak,file3.bak到文件夹中backups.但是使用bakfiles.txt这样做的内容.
我试过了:
xargs -a bakfiles.txt | cp {} backups
Run Code Online (Sandbox Code Playgroud)
但我得到错误:
cp: cannot stat `{}': No such file or directory
Run Code Online (Sandbox Code Playgroud)
我应该提一下我也尝试过:
xargs -a bakfiles.txt cp {} backups
Run Code Online (Sandbox Code Playgroud)
并得到错误:
cp: target `file3.bak' is not a directory
Run Code Online (Sandbox Code Playgroud) 我想将文件从我的Ubuntu主机复制到Docker容器.
我从14.04 LTS存储库使用Docker 1.6.2.
当我尝试复制时,我得到错误:
sudo docker cp 1.JPG evil_sammet:/root/openface/training-images/misha/1.jpg
FATA[0000] Error: Path not specified
Run Code Online (Sandbox Code Playgroud)
取得同样的成功,我可以输入乱码而不是文件名和路径:
sudo docker cp sdfsdfasd dfsdffd
FATA[0000] Error: Path not specified
Run Code Online (Sandbox Code Playgroud)