该命令mogrify -format jpg *.NEF在目录中运行时会将所有*.NEF文件转换为 JPEG。我想要做的是能够使用一个命令在子目录内的*.NEF文件中运行 mogrify 。我正在尝试运行类似的东西:
find . -type d exec mogrify -format jpg *.NEF \;
Run Code Online (Sandbox Code Playgroud)
当然它不起作用。有人可以建议正确的命令吗?
我现在一直在使用记事本++,并且对如何执行此操作感到困惑:
我正在搜索的多个文件(在根目录中)中有一行。例子:
Brittany (File 1)
PeopleSleptWith 2
Tiffany (File 2)
PeopleSleptWith 4
Bonqueesh (File 3)
PeopleSleptWith 3456
.
.
.
Run Code Online (Sandbox Code Playgroud)
我的目标是PeopleSleptWith用常量 (IE PeopleSleptWith 7)替换所有行,但是当我在多个文件中搜索和替换时,它不会删除完整的行,从而导致:
Brittany (File 1)
PeopleSleptWith 7 2
Tiffany (File 2)
PeopleSleptWith 7 4
Bonqueesh (File 3)
PeopleSleptWith 7 3456
Run Code Online (Sandbox Code Playgroud)
在现实中我想要:
Brittany (File 1)
PeopleSleptWith 7
Tiffany (File 2)
PeopleSleptWith 7
Bonqueesh (File 3)
PeopleSleptWith 7
Run Code Online (Sandbox Code Playgroud)
那么我如何继续寻找一个字符串,删除该行中的所有内容,并用另一个字符串替换它呢?
我需要找到名称中包含某个字符的所有目录并将它们打印出来。
所以如果我有目录:
abc cde fgh
Run Code Online (Sandbox Code Playgroud)
我搜索“c”我应该得到:
abc
cde
Run Code Online (Sandbox Code Playgroud) 使用 Mac OS X 终端,如何编写find按修改日期(最近在前)对结果进行排序的命令?
已经有类似的问题,但它们指的是GNUfind和POSIX,但我不知道Mac OS X是GNU还是POSIX还是其他什么。
我所在的学校大概有 200 多台电脑,我在一定范围内进行了 IP 扫描,发现了三四台打印机。我想知道是否有可能在学校找到这些打印机,或者通过使用它们周围的其他计算机并检查它们的 IP 地址,并通过这种方式缩小范围,或者是否有可能使用类似的方法来映射网络NMap,除了我没有必要的权限来安装这样的程序的一部分。
我只是好奇这是否可以完成,任何帮助将不胜感激。
我正在运行此 shell 命令以获取在我的服务器上修改的最新 20 个 PHP 文件。
find . -name '*.php' -printf '%TY-%Tm-%Td %TH:%TM:%TS %Tz %p\n' | sort -r | head -20
Run Code Online (Sandbox Code Playgroud)
输出是这样的:
2016-08-08 01:44:45.3820716170 -0700 ./html/index.php
2016-08-07 05:39:29.0000000000 -0700 ./html/thumb.php
2016-08-07 03:01:44.0000000000 -0700 ./html/paths.php
...
Run Code Online (Sandbox Code Playgroud)
根据strftime 手册页,我应该能够使用 %S(和 %TS)
%S
第二个是十进制数(范围 00 到 60)。(范围最大为 60,以允许偶尔出现闰秒。)
可能有问题find,但其他时间参数按预期工作。我正在尝试获得如下结果。如果额外的字符串实际上是小数秒,则四舍五入或截断都可以。如何才能做到这一点?
2016-08-08 01:44:45 -0700 ./html/index.php
2016-08-07 05:39:29 -0700 ./html/thumb.php
2016-08-07 03:01:44 -0700 ./html/paths.php
...
Run Code Online (Sandbox Code Playgroud)
(如果有更有效的方法来执行上述命令的操作,我会全力以赴。)
虽然我已经使用 BASH 好几年了,但我在 BASH 脚本方面的经验相对有限。
我的代码如下。它应该从当前目录中获取整个目录结构并将其复制到$OUTDIR.
for DIR in `find . -type d -printf "\"%P\"\040"`
do
echo mkdir -p \"${OUTPATH}${DIR}\" # Using echo for debug; working script will simply execute mkdir
echo Created $DIR
done
Run Code Online (Sandbox Code Playgroud)
问题是,这是我的文件结构示例:
$ ls
Expect The Impossible-Stellar Kart
Five Iron Frenzy - Cheeses...
Five Score and Seven Years Ago-Relient K
Hello-After Edmund
I Will Go-Starfield
Learning to Breathe-Switchfoot
MMHMM-Relient K
Run Code Online (Sandbox Code Playgroud)
请注意空格 :-S 并for逐字接受参数,因此我的脚本输出如下所示:
Creating directory structure...
mkdir -p "/myfiles/multimedia/samjmusicmp3test/Learning"
Created Learning
mkdir …Run Code Online (Sandbox Code Playgroud) 当我将文件复制到我的 U 盘并在车载 mp3 播放器中收听时,文件的物理顺序很重要。我的大部分音乐专辑文件夹都是未分类的,例如ls -f可能会产生:
03.song3.mp3
01.song1.mp3
02.song2.mp3
当我将该文件夹复制到我的 USB 记忆棒上时,文件将按该顺序复制。我的车载 mp3 播放器以未排序的顺序显示文件,这不是我想要的。我随后可以对 U 盘上的文件重新排序(请参阅:如何重新排序文件夹?(如 `ls -U` 中所示)),但如果我可以在我的硬盘驱动器上的该目录中重新排序它们,则可以完全避免这种情况(ext4 )?有没有办法做到这一点?
(否则,可能有一种编写find命令的方法,即获取文件,对它们进行排序,然后按顺序复制它们??)有什么建议吗?
使用循环,例如
for i in `find . -name \*.txt`
Run Code Online (Sandbox Code Playgroud)
如果某些文件名中有空格,则会中断。
我可以使用什么技术来避免这个问题?