标签: file-copy

!cp:$ 有什么作用?

我在我工作中的一个程序的文档中看到了这个命令:

cp company-sso /usr/local/bin/company-sso ; sudo chmod +x !cp:$
Run Code Online (Sandbox Code Playgroud)

我知道这:会阻止执行下一个命令,它只会被评估,但这如何工作$?我只见过$在变量名之前使用过,例如$USERor$HOME但从来没有单独使用过。还有,怎么操作!cp?不会执行cp?这样做的目的是什么?这整条线有意义吗?

shell bash shell-script file-copy

14
推荐指数
1
解决办法
952
查看次数

复制到 USB 驱动器的文件的时间戳

我对从我的 PC 或笔记本电脑复制到 USB 驱动器的文件的时间戳有问题:原始文件的最后修改时间与复制文件的最后修改时间不同。因此,在我的 PC 和 USB 驱动器之间同步文件非常麻烦。

分步说明

  1. 我使用 GUI 或命令将任意文件从我的 PC/笔记本电脑复制到 USB 驱动器

    cp -a file.txt /media/gabor/CORSAIR/
    
    Run Code Online (Sandbox Code Playgroud)
  2. 我检查原始文件的最后修改时间:

    $ ls -l --time-style=full-iso file.txt
    -rw-rw-r-- 1 gabor gabor 0 2018-09-22 15:09:23.317098281 +0200 file.txt
    
    Run Code Online (Sandbox Code Playgroud)
  3. 我检查复制文件的最后修改时间:

    $ ls -l --time-style=full-iso /media/gabor/CORSAIR/file.txt
    -rw-r--r-- 1 gabor gabor 0 2018-09-22 15:09:23.000000000 +0200 /media/gabor/CORSAIR/file.txt
    
    Run Code Online (Sandbox Code Playgroud)
  4. 如您所见,复制文件的最后修改时间中的秒数被截断为零十进制数字。但是,如果我输入命令

    if ! [ file.txt -nt /media/gabor/CORSAIR/file.txt ] && ! [ file.txt -ot /media/gabor/CORSAIR/file.txt ]; then echo "The last modification times are equal."; fi
    
    Run Code Online (Sandbox Code Playgroud)

我得到输出 The last modification times are …

file-copy usb-drive timestamps

13
推荐指数
1
解决办法
1980
查看次数

将文件从 Windows 共享文件夹复制到 Unix

我对 Unix 完全陌生。我正在编写一个脚本,它将文件从 Windows 共享文件夹复制到 Unix。

在 Windows 中,当我输入\\Servername.com\testfolderRun 命令时,我可以看到testfolder. 该目录testfolder是一个贯穿全网的共享文件夹。

现在我想将其中的一些文件复制testfolder到 Unix 机器上。我应该使用哪个命令?我知道服务器的 IP 地址,但我不知道用户名。

shell samba file-copy

12
推荐指数
2
解决办法
11万
查看次数

如何在复制时重命名文件?

在重命名每个文件以从名称中删除随机字符串部分(即 -2b0fd460_1426b77b1ee_-7b8e)时,如何将备份目录中的所有文件(日期未更改的归档样式)复制到用户目录中?

cp来自:

/backup/path/data/Erp.2014.02.16_16.57.03-2b0fd460_1426b77b1ee_-7b8e.etf
Run Code Online (Sandbox Code Playgroud)

到:

/home/user/data/Erp.2014.02.16_16.57.03.etf
Run Code Online (Sandbox Code Playgroud)

每个文件总是以“Erp”开头。后跟日期时间戳字符串,后跟随机字符串,然后是扩展名“.etf”。我想保留所有名称元素,包括日期时间戳。我只想删除随机字符串。

随机字符串允许对同一文件进行多次备份。但是,在这种情况下,我只是运行了 fdupes 并且没有重复。所以我可以简单地恢复所有文件,删除随机字符串。

我正在寻找一个单行 bash 命令来做到这一点。

如果这不起作用,我可以分两步或更多步完成。我通常使用 KRename,但在这种情况下,我需要在 bash 中进行。(我在远程工作。)

shell bash file-copy rename

12
推荐指数
2
解决办法
6万
查看次数

如何一步复制并添加文件名前缀?

我想复制和重命名一个目录中的多个 c 源文件。

我可以这样复制:

$ cp *.c $OTHERDIR
Run Code Online (Sandbox Code Playgroud)

但我想给所有文件名一个前缀:

file.c --> old#file.c
Run Code Online (Sandbox Code Playgroud)

我怎样才能在 1 步中做到这一点?

bash cp file-copy

12
推荐指数
2
解决办法
4万
查看次数

如何复制文件夹中的所有文件,但不包括正在写入的文件?

downloading通过HTTPie将多个文件下载到一个文件夹。bash 脚本旨在处理下载的文件,我尝试将下载的文件复制到另一个文件夹中

find /folder/downloading -type f -exec mv '{}' /folder/downloaded \;
Run Code Online (Sandbox Code Playgroud)

但这也会复制尚未完成的文件。我试图通过添加-mmin +5到命令来限制对旧文件的传输。离开正在写入的文件并仅传输下载的文件的有效命令是什么?

bash find shell-script file-copy files

12
推荐指数
1
解决办法
601
查看次数

如何将文件从多个服务器复制到本地系统?

我们在 app00、app01 等服务器上多次部署了一个应用程序。我需要将所有这些服务器中的单个日志文件复制到我的本地 mac 上,以便我可以执行一些 grepping 和剪切。

我使用 csshX 来查看此文件,但找不到 scp 的等效项。我基本上想要两件事:

  1. 能够连接到 n 个这样的服务器并复制文件
  2. 避免在本地命名冲突,方法是在日志文件前加上服务器主机名

我该怎么做呢?

scp file-copy

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

如何将root无法访问的目录复制到只有root才能访问的目录?

我在 nfs 挂载上有一个目录,它在服务器上位于 /home/myname/.rubies

Root 无法访问此目录:

[mitchell.usher@server ~]$ stat /home/mitchell.usher/.rubies
  File: `/home/mitchell.usher/.rubies'
  Size: 4096            Blocks: 8          IO Block: 32768  directory
Device: 15h/21d Inode: 245910      Links: 3
Access: (0755/drwxr-xr-x)  Uid: (  970/mitchell.usher)   Gid: (  100/   users)
Access: 2016-08-22 15:06:15.000000000 +0000
Modify: 2016-08-22 14:55:00.000000000 +0000
Change: 2016-08-22 14:55:00.000000000 +0000

[mitchell.usher@server ~]$ sudo !!
sudo stat /home/mitchell.usher/.rubies
stat: cannot stat `/home/mitchell.usher/.rubies': Permission denied
Run Code Online (Sandbox Code Playgroud)

我试图从该目录中复制一些/opt只有 root 有权访问的内容:

[mitchell.usher@server ~]$ cp .rubies/ruby-2.1.3/ -r /opt
cp: cannot create directory `/opt/ruby-2.1.3': Permission denied

[mitchell.usher@server ~]$ …
Run Code Online (Sandbox Code Playgroud)

root permissions file-copy

11
推荐指数
2
解决办法
2096
查看次数

为什么没有文件插入系统调用

据我了解,对于操作文件,Linux 中只有 sys_write 系统调用,它会覆盖文件内容(或扩展它,如果在最后)。

为什么在 Linux 中没有用于在文件中插入或删除内容的系统调用?

由于所有当前的文件系统都不需要将文件存储在连续的内存块中,因此应该有可能实现高效的实现。(文件会碎片化。)

由于文件系统具有“写入时复制”或“透明文件压缩”等特性,当前插入内容的方式似乎非常低效。

system-calls file-copy files

11
推荐指数
2
解决办法
1784
查看次数

将数百万个文件移动到具有特定名称模式的不同目录

我在 Linux 机器上有数百万个具有以下命名法的文件:

1559704165_a1ac6f55fef555ee.jpg
Run Code Online (Sandbox Code Playgroud)

前 10 位数字是时间戳,后跟 a 的数字_是特定的 ID。我想将与特定文件名 ID 匹配的所有文件移动到不同的文件夹。

我在带有文件的目录上试过这个

find . -maxdepth 1 -type f | ??????????_a1ac*.jpg |xargs mv -t "/home/ubuntu/ntest"
Run Code Online (Sandbox Code Playgroud)

但是我收到一个错误指示:

bash 1559704165_a1ac6f55fef555ee.jpg: command not found
Run Code Online (Sandbox Code Playgroud)

当我尝试时,mv ??????????_a1ac*.jpg 我收到参数列表太长错误。我至少有 15 种不同的文件名模式。我如何移动它们。

file-copy

10
推荐指数
3
解决办法
1899
查看次数