循环遍历子目录,cd进入子目录,然后处理文件

时间:2015-12-14 05:18:34

标签: bash sh

我有一个脚本,可以使用inkscape将SVG文件转换为PNG。但是,转换后的文件将放在脚本所在的顶级目录中。我希望将转换后的文件放在子目录中。

顶级目录如下所示:

folderA
|---file1.svg
|---file2.svg
|---file3.svg
folderB
|---file4.svg
|---file5.svg
|---file6.svg
svg2png.sh

运行脚本后,我希望PNG文件位于其子目录中,如下所示:

folderA
|---file1.svg
|---file1.png
|---file2.svg
|---file2.png
|---file3.svg
|---file3.png
folderB
|---file4.svg
|---file4.png
|---file5.svg
|---file5.png
|---file6.svg
|---file6.png
svg2png.sh

不喜欢这样:

file1.png
file2.png
file3.png
file4.png
file5.png
file6.png
folderA
|---file1.svg
|---file2.svg
|---file3.svg
folderB
|---file4.svg
|---file5.svg
|---file6.svg
svg2png.sh

这是svg2png.sh

#/bin/sh
find . -name \*.svg -exec sh -c 'inkscape -z -e $(basename {} .svg).png {}' \;

这是@ anishsane提供的更新的svg2png.sh:

#/bin/sh
find . -name \*.svg -execdir sh -c 'inkscape -z -e $(basename {} .svg).png {}' \;

1 个答案:

答案 0 :(得分:1)

将其添加为答案。这应该可以帮到你:

CREATE OR REPLACE PROCEDURE check_sal(
    func employees.job_id%type,
    sal employees.salary%type)
IS
TYPE max_sal_tab
IS
  TABLE OF jobs.max_salary%type;
  max_sal max_sal_tab;
TYPE empid_tab
IS
  TABLE OF employees.employee_id%type;
  empid empid_tab;
TYPE sal_tab
IS
  TABLE OF employees.salary%type;
  sal sal_tab;
TYPE jobid_tab
IS
  TABLE OF employees.job_id%type;
  func jobid_tab;
TYPE min_sal_tab
IS
  TABLE OF employees.min_salary%type;
  min_sal min_sal_tab;
BEGIN
  SELECT e.employee_id,
    e.salary,
    e.job_id,
    j.max_salary,
    j.min_salary BULK COLLECT
  INTO empid,
    sal,
    func,
    max_sal,
    min_sal
  FROM employees e
  JOIN jobs j
  ON e.job_id = j.job_id
  ORDER BY e.employee_id;
  FOR i IN empid.FIRST..empid.LAST
  LOOP
    IF(sal < min_sal(i)) OR (sal > max_sal(i)) THEN
      RAISE_APPLICATION_ERROR(-20000,'OUT OF BOUND',TRUE);
    ELSE
      DMBS_OUTPUT.PUT_LINE('OK');
      --Do not use dbms output in any prod env
    END IF;
  END LOOP;
END;