标签: cp

复制名称符合模式的文件

我需要一个 Linux 命令来复制一个名称与特定模式匹配的文件。

例如:

我有一个文件builds/myApp_v_4.1.apk,我想将其复制到artifacts/myApp_v_4.1.apk

然而它可以是myApp_v_4.2.apkmyApp_v_4.3.apk...

所以我正在寻找一种方法来复制以“myApp_v_”开头并以“.apk”结尾的文件

使用cp命令可以做到这一点吗?

非常感谢

linux shell command cp

4
推荐指数
1
解决办法
8401
查看次数

为什么 Linux 命令 CP 在 CLI 和脚本中的行为不同?

我想复制一堆 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)

linux bash cp

4
推荐指数
1
解决办法
1035
查看次数

我可以使用 xargs 作为目录路径的一部分吗?

我有这个目录结构:

% 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)

当然有一种方法可以做到这一点而无需编写单独的脚本吗?

unix bash xargs cp

4
推荐指数
1
解决办法
1677
查看次数

有没有办法将 Mac Catalina 上的只读文件系统更改为可写文件系统?

我正在尝试将文件从一个文件夹复制到另一个文件夹。我收到一条错误消息,指出目标文件夹是只读文件系统。我最初认为更改文件权限可以缓解该问题,但事实并非如此。如何将文件从一个文件夹复制到另一个文件夹?这是我使用的命令:

cp sourceFolder/someFile.txt /destFolder
Run Code Online (Sandbox Code Playgroud)

错误信息:

cp: /destFolder: Read-only file system
Run Code Online (Sandbox Code Playgroud)

command-line cp macos-catalina

4
推荐指数
1
解决办法
3万
查看次数

如何正确使用 xargs 和 cp

我想要做的是从索引文件中读取文件名列表,然后将每个列出的文件复制到另一个目录,但我在正确地将 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 的输入作为其第一个操作数而不是第二个操作数,但我如何让它做到这一点?

bash command-line xargs cp

4
推荐指数
1
解决办法
5050
查看次数

如何从stdin使用cp?

注意:

# 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不是目录

stdin cygwin cp

3
推荐指数
2
解决办法
5763
查看次数

Bash:如何复制目录的文件

在脚本中,我有声明

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中是否有选项可以避免投诉(我找不到任何投诉)?

有没有一种简单的方法来检查目录中是否存在任何文件?

bash cp

3
推荐指数
1
解决办法
3177
查看次数

在子进程中使用*通配符的命令问题

我正在尝试使用子进程库和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)

python subprocess glob copy cp

3
推荐指数
1
解决办法
2348
查看次数

"xargs -a file"将文件复制到文件夹

我想用它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)

linux xargs cp

3
推荐指数
2
解决办法
7211
查看次数

Docker cp错误:未指定路径

我想将文件从我的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)

cp docker

3
推荐指数
1
解决办法
5943
查看次数

标签 统计

cp ×10

bash ×4

linux ×3

xargs ×3

command-line ×2

command ×1

copy ×1

cygwin ×1

docker ×1

glob ×1

macos-catalina ×1

python ×1

shell ×1

stdin ×1

subprocess ×1

unix ×1