我有三个层次的文件夹,如main,sub-1和sub-2。我的主文件夹有很多子-1文件夹和子-1有很多的子-2文件夹与JPG图像在里面。
我使用以下命令将JPG文件从子-2复制到其父子-1文件夹中。
find . -type f -name "*.jpg" -exec sh -c 'for p; do
cp "$p" "${p%/*/*}"
done' _ {} +现在我必须从我的主文件夹中将所有jpgs转换成每个子-1文件夹中的一个pdf文件,因此将有我的所有复制的jpgs,以及在sub-1中转换的pdf (pdf名称应该是文件夹名称ex: sub-1)。转换完成后,我必须删除复制的jpgs仅在子-1文件夹(而不是原始的jpgs),因此将有许多子-2文件夹与一个pdf文件。
我使用img2pdf库来隐藏我的图像。我尝试了下面这个命令,它没有做任何工作,我找不到任何解决方案。现在我该怎么做呢?
find . -name '*.jpg' -type f -exec bash -c 'img2pdf *.jpg -o "${PWD##*/}".pdf' {} + \发布于 2021-08-31 11:32:30
我在我的Photos目录树中做了一些测试,下面有两个some脚本的系统为我工作。
first**:**
#!/bin/bash
find * -type d -exec second {} \;
echo ""second**:**
#!/bin/bash
num=$(ls "$1"/*.jpg 2> /dev/null | wc -l)
if [ $num -ne 0 ]
then
echo -n "."
img2pdf -o "$1/${1//\//-}_${num}_pictures".pdf "$1"/*.jpg
fiEdit两次:备用脚本 second生成一个pdf文件,名称中没有多少图片和“图片”:
#!/bin/bash
num=$(ls "$1"/*.jpg 2> /dev/null | wc -l)
if [ $num -ne 0 ]
then
echo -n "."
img2pdf -o "$1/${1##*/}".pdf "$1"/*.jpg
fifirst和second~/bin中。否则,如果其他用户也应该使用这些should脚本,请将它们移动到/usr/local/bin mkdir ~/bin第一个第二个~/bin中,您可能需要重新启动以使~/bin进入您的路径。现在你已经准备好使用它们了。将目录更改为顶部或目录树,其中有图片并运行first。
示例(但您有本地名称,而不是像英语那样的图片),
cd ~/Pictures
first它将在每个子目录的终端窗口中写入一个点,在该子目录中它至少会找到一张图片并创建一个pdf文件。
您可以使用以下命令找到pdf文件
find -name "*.pdf"Major编辑:
经过与原始海报的讨论,我想我理解了要处理的目录树的结构。较低级别文件的副本位于带有人名的子目录中。这些子目录中的文件将合并成pdf-文件。
示例:
$ tree -U
.
├── adam
│ ├── mkusb-minp-2-crop.jpg
│ ├── us_keyboard_for_sudo_password.jpg
│ ├── nautilus-connect-to-server-2.jpg
│ ├── pict1
│ │ ├── mkusb-minp-2-crop.jpg
│ │ └── nautilus-connect-to-server-2.jpg
│ ├── pict2
│ │ └── us_keyboard_for_sudo_password.jpg
│ └── adam.pdf
└── betty
├── nautilus-connect-to-server-1.jpg
├── mkusb-minp-3-cropx.jpg
├── pict1
│ ├── nautilus-connect-to-server-1.jpg
│ └── calamares-mount-failed.jpg
├── pict2
│ └── mkusb-minp-3-cropx.jpg
├── calamares-mount-failed.jpg
└── betty.pdf
6 directories, 14 files如果使用cd将工作目录更改为这些名称目录所在的位置,则可以使用以下修改的first外壳脚本。
#!/bin/bash
find -mindepth 1 -maxdepth 1 -type d -exec second {} \;
echo ""它将只在名称目录中运行second外壳脚本,而不是查找目录树较低级别中的内容。
下面显示的是find如何只查找名称目录
$ find -mindepth 1 -maxdepth 1
./adam
./bettyhttps://askubuntu.com/questions/1361080
复制相似问题