我在我工作中的一个程序的文档中看到了这个命令:
cp company-sso /usr/local/bin/company-sso ; sudo chmod +x !cp:$
Run Code Online (Sandbox Code Playgroud)
我知道这:会阻止执行下一个命令,它只会被评估,但这如何工作$?我只见过$在变量名之前使用过,例如$USERor$HOME但从来没有单独使用过。还有,怎么操作!cp?不会执行cp?这样做的目的是什么?这整条线有意义吗?
我对从我的 PC 或笔记本电脑复制到 USB 驱动器的文件的时间戳有问题:原始文件的最后修改时间与复制文件的最后修改时间不同。因此,在我的 PC 和 USB 驱动器之间同步文件非常麻烦。
分步说明
我使用 GUI 或命令将任意文件从我的 PC/笔记本电脑复制到 USB 驱动器
cp -a file.txt /media/gabor/CORSAIR/
Run Code Online (Sandbox Code Playgroud)我检查原始文件的最后修改时间:
$ 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)我检查复制文件的最后修改时间:
$ 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)如您所见,复制文件的最后修改时间中的秒数被截断为零十进制数字。但是,如果我输入命令
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 …
我对 Unix 完全陌生。我正在编写一个脚本,它将文件从 Windows 共享文件夹复制到 Unix。
在 Windows 中,当我输入\\Servername.com\testfolderRun 命令时,我可以看到testfolder. 该目录testfolder是一个贯穿全网的共享文件夹。
现在我想将其中的一些文件复制testfolder到 Unix 机器上。我应该使用哪个命令?我知道服务器的 IP 地址,但我不知道用户名。
在重命名每个文件以从名称中删除随机字符串部分(即 -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 中进行。(我在远程工作。)
我想复制和重命名一个目录中的多个 c 源文件。
我可以这样复制:
$ cp *.c $OTHERDIR
Run Code Online (Sandbox Code Playgroud)
但我想给所有文件名一个前缀:
file.c --> old#file.c
Run Code Online (Sandbox Code Playgroud)
我怎样才能在 1 步中做到这一点?
我downloading通过HTTPie将多个文件下载到一个文件夹。bash 脚本旨在处理下载的文件,我尝试将下载的文件复制到另一个文件夹中
find /folder/downloading -type f -exec mv '{}' /folder/downloaded \;
Run Code Online (Sandbox Code Playgroud)
但这也会复制尚未完成的文件。我试图通过添加-mmin +5到命令来限制对旧文件的传输。离开正在写入的文件并仅传输下载的文件的有效命令是什么?
我们在 app00、app01 等服务器上多次部署了一个应用程序。我需要将所有这些服务器中的单个日志文件复制到我的本地 mac 上,以便我可以执行一些 grepping 和剪切。
我使用 csshX 来查看此文件,但找不到 scp 的等效项。我基本上想要两件事:
我该怎么做呢?
我在 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) 据我了解,对于操作文件,Linux 中只有 sys_write 系统调用,它会覆盖文件内容(或扩展它,如果在最后)。
为什么在 Linux 中没有用于在文件中插入或删除内容的系统调用?
由于所有当前的文件系统都不需要将文件存储在连续的内存块中,因此应该有可能实现高效的实现。(文件会碎片化。)
由于文件系统具有“写入时复制”或“透明文件压缩”等特性,当前插入内容的方式似乎非常低效。
我在 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
bash ×4
shell ×3
files ×2
shell-script ×2
cp ×1
find ×1
permissions ×1
rename ×1
root ×1
samba ×1
scp ×1
system-calls ×1
timestamps ×1
usb-drive ×1